当前位置: 首页 > news >正文

数据驱动测试DDT,利用POI读取excel文件内容参数化作用

数据驱动测试DDT,利用POI读取excel文件内容参数化作用:
第一种参数化:是直接在代码中间进行参数化,定义一个数组或集合进行参数化,不好维护
第二种参数化:数据驱动测试DDT进行参数化,所有需要参数化的数据在excel表格中间进行维护,后续需要对参数化进行更新可以直接更新excel

自动化测试框架项目实战之数据驱动测试DDT:
进行接口自动化测试:
1、需要通过DDT数据驱动进行接口的参数化
2、编写自动化测试用例
3、通过一个监听进行美化自动化测试报告
4、需要编写testng.xml管理测试用例集
5、运行testng.xml
6、查看输出的测试报告

需要创建两个包,com.testerhome.businesscom.testerhome.listener,然后把poi相关的依赖包导入到pom.xml,如下:

<!--DDT 驱动POI 依赖包 start -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.1</version>
</dependency>
<!--DDT 驱动POI 依赖包 end -->

然后clean、install(Run Maven Build),就把依赖包导入到项目中了,需要在指定的目录(D盘),新建excel文件,testerhomedata.xlsx,里面创建两条记录,如下图:

image

项目实战之getJsonAll获取所有报文的自动化测试代码实现:
在包com.testerhome.business下新建一个类,BusinessLogic.java,新增代码如下:

package com.testerhome.business;

import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import java.io.File;
import java.io.FileInputStream;

import static io.restassured.RestAssured.get;
import static io.restassured.RestAssured.given;
import static io.restassured.module.jsv.JsonSchemaValidator.matchesJsonSchemaInClasspath;

import java.util.HashMap;
import java.util.Map;

/*
* 项目实战之数据驱动测试DDT,利用POI读取excel文件内容参数化
* POI读取excel,读取文件中间的值,赋值给DataProvider
* @DataProvider注解帮助我们编写数据驱动的测试用例
* @DataProvider注解使我们能够通过传递不同的数据集多次运行测试方法
* */
public class BusinessLogic {
// https://testerhome.com/api/v3/topics.json?limit=3&offset=0&type=last_actived,这个接口中间所有json格式报文进行读取
// ,并且需要通过DDT数据驱动读取excel表中间的参数
// ,limit=3&offset=0这个值不能写死,需要通过POI动态读取excel中间的值
@Test(dataProvider = "testerhomedata")
// getJsonAll获取所有报文的自动化测试案例
public void getJsonAll(String limit, String offset){
get("https://testerhome.com/api/v3/topics.json?"+limit+"&offset"+offset+"&type=last_actived").prettyPeek();
System.out.println(limit);
System.out.println(offset);
}
@DataProvider(name = "testerhomedata")
public Object[][] TestDataFeed() throws Exception {

File src = new File("D:\\testerhomedata.xlsx");
FileInputStream fis = new FileInputStream(src);

@SuppressWarnings("resource")
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sh1 = wb.getSheetAt(0);
int numberrow = sh1.getPhysicalNumberOfRows();

Object[][] testerhomedata = new Object[numberrow][2];
for (int i = 0; i < numberrow; i++) {
testerhomedata[i][0] = sh1.getRow(i).getCell(0).getStringCellValue();
// System.out.println(baidudata[i][0]);
testerhomedata[i][1] = sh1.getRow(i).getCell(1).getStringCellValue();
// System.out.println(baidudata[i][1]);
}
return testerhomedata;
}
}

运行成功,实现了通过excel表格中间读取数据进行参数化

项目实战获取服务端状态码自动化测试代码实现:
在BusinessLogic.java,新增代码如下:

// 项目实战过程中需要获取响应状态码,如果返回200,代表服务端响应正常,非200,代表异常
@Test(dataProvider = "testerhomedata")
public void getStatusCode(String limit, String offset){
int statuscode=given().get("https://testerhome.com/api/v3/topics.json?"+limit+"&"+offset+"&type=last_actived").statusCode();
System.out.println(statuscode);
// 需要把相关的日志输出到测试报告,需要通过代码中间的执行日志进行记录
Reporter.log("返回服务端响应状态码,如果返回200,代表正常,否则代表服务端异常,输出状态码"+statuscode); // 这句话只能出现在报告里
if (statuscode==200){
System.out.println("测试用例执行成功"+statuscode);
}else {
System.out.println("测试用例执行失败"+statuscode);
}
System.out.println(limit);
System.out.println(offset);
}

只运行这个方法即可,运行成功,打印如下图:

image

项目实战json报文长度接口自动化测试代码实现:
再新建一个类,BusinessInterface.java,新增代码如下:

http://www.jsqmd.com/news/442688/

相关文章:

  • 维生素D3哪个牌子效果好?进口维生素D3十大品牌公布,top1护骨提免疫口碑在线 - 博客万
  • 从此告别拖延!MBA热捧的一键生成论文工具 —— 千笔ai写作
  • 2026首评!走进杭州食品厂洁净车间看生产保障,净化车间/无尘室/洁净室/恒温恒湿车间/无尘车间,洁净车间建设哪家好 - 品牌推荐师
  • 计算机毕业设计之基于Springboot乡村医疗在线咨询系统的设计
  • 2026上海宠物口腔溃疡诊疗,这几位医生别错过,猫咪洗牙/狗狗牙结石/宠物口腔溃疡诊疗,宠物口腔溃疡诊疗医生哪家好 - 品牌推荐师
  • 数据结构必学:8种常见排序算法全解析(原理+实现+优化+前瞻应用)
  • 2026年口碑好的汽车密封圈品牌推荐:大连密封圈/硅胶密封圈/大连氟橡胶密封圈厂家推荐哪家好 - 行业平台推荐
  • SSL证书有什么用?为什么要域名证书
  • 计算机毕业设计之springboot开放式实验室预约微信小程序的设计与实现
  • 2026年比较好的定制O型圈厂家推荐:液压O型圈生产商哪家强 - 行业平台推荐
  • 海运国际贸易:
  • 2026年热门的宁波卧室穿衣镜公司推荐:宁波壁挂穿衣镜销售厂家哪家好 - 行业平台推荐
  • Bubble Tea等工具v2版本正式发布
  • mysql中general_log日志详解
  • 推荐一下雪茄窖定制多少钱,冰格佳美在成都收费如何? - 工业设备
  • 【adas】ADAS域常用外围感知传感器整理
  • uni-app——uni-app 小程序 之 【列表多状态筛选的前后端联调实践:从单状态到IN查询的向后兼容设计】
  • 电采暖性价比高的厂家怎么选 哈尔滨韩达电热工程公司靠谱不 - 工业品网
  • 制作网站选服务器还是虚拟主机?轻量应用服务器能不能选
  • 智能家居控制系统设计与实现
  • 上海室内设计公司哪家好,铂空间设计给你高品质设计体验 - 工业品网
  • ASCLIN UART LIN这三个解释一下
  • 2026年高精度数控油源生产公司哪家专业,排名情况揭秘 - mypinpai
  • MES工具更新信息 01/2026
  • 为什么 Infineon 不直接叫 UART,而叫 ASCLIN?以及 ASCLIN 和 STM32 的 USART 在架构上的本质区别(这个对理解 AURIX 外设很重要)
  • 点云数据类型详解:从XYZ到XYZRGB到法向量
  • 2025陕西玻璃钢雕塑厂家五大推荐:覆盖泡沫雕塑、不锈钢雕塑与景观雕塑的一站式厂家榜单 - 深度智识库
  • 炎症“三巨头”——TNF-α, IL-1β, IL-6 的作用机制解析
  • 探讨2026年方形摇摆筛,河南亚通机械靠谱吗? - 工业品牌热点
  • 项目管理秘籍-低代码开发者的职业天花板,到底在哪里?