-
java 接口测试,使用excel做数据驱动(二)
承接上篇。
改变我们的测试驱动方式,灵活设置测试用例。
数据驱动测试
数据驱动测试的核心是:
测试数据与测试脚本分离,实现测试脚本参数化,
提高测试脚本的可重用性。在自动化功能测试中如果灵活使用数据源与测试脚本,
便能轻松创建与运行成百上千个测试用例。自动化测试框架必须要有与电子表格、文本文件、数据库集成的能力。
首先小伙伴们就会问,你要先解析Excel吧,那你肯定得给我上代码,是的,必须的上代码。
package com.testapi.until; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelUtils { private static XSSFSheet ExcelWSheet; private static XSSFWorkbook ExcelWBook; private static XSSFCell Cell; private static XSSFRow Row; public static Object[][] getTableArray(String FilePath, String SheetName) throws Exception { String[][]tabArray = null; try { FileInputStream ExcelFile = new FileInputStream(FilePath); ExcelWBook = new XSSFWorkbook(ExcelFile); ExcelWSheet = ExcelWBook.getSheet(SheetName); int startRow = 1; int startCol = 1; int ci,cj = 0; int totalRows = ExcelWSheet.getLastRowNum(); int totalCols = 2; tabArray=new String[totalRows][6]; ci=0; cj=0; int cm = 0;int cl = 0;int ch = 0; for (int i=startRow;i<=totalRows;i++, ci++) { tabArray[ci][0]=getCellData(i,2); tabArray[ci][1]=getCellData(i,3); tabArray[ci][2]=getCellData(i,4); tabArray[ci][3]=getCellData(i,5); tabArray[ci][4]=getCellData(i,6); } } catch (FileNotFoundException e){ System.out.println("Could not read the Excel sheet"); e.printStackTrace(); } catch (IOException e){ System.out.println("Could not read the Excel sheet"); e.printStackTrace(); } return(tabArray); } public static String getCellData(int RowNum, int ColNum) throws Exception { try{ Cell = ExcelWSheet.getRow(RowNum).getCell(ColNum); int dataType = Cell.getCellType(); if (dataType == 3) { return ""; } else{ String CellData = Cell.getStringCellValue(); return CellData; } } catch (Exception e){ // System.out.println(e.getMessage()); throw (e); } } public static void main(String[] args) throws Exception { ExcelUtils excelUtils=new ExcelUtils(); Object[][] m = excelUtils.getTableArray("C:\\Users\\Administrator\\eclipse-workspace\\ApiTest\\casedata\\casedata.xlsx","Sheet1"); } }
这就是我们的代码,那么小伙伴迫不及待了,你快来告诉我,
你的测试用例怎么组织的,好的 ,热腾腾的钙素你,我给你的就是代码,就是源码。源码如下
package com.testapi.casev; import static org.testng.Assert.assertEquals; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.DataProvider; import org.testng.annotations.Listeners; import org.testng.annotations.Test; import com.testapi.until.ExcelUtils; import com.testapi.until.Getcode; import com.testapi.until.Makejson; import com.testapi.until.ParseJson; import com.testapi.until.*; @Listeners({ZTestReport.class}) public class Testapi { @DataProvider(name="DP1") public Object[][] createData() throws Exception { ExcelUtils excelUtils=new ExcelUtils(); Object[][] m = ExcelUtils.getTableArray("casedata\\casedata.xlsx","Sheet1"); return m; } @Test(dataProvider="DP1") public void f(String url,String path,String meth,String map,String jsonid,String qiwang) { String param1 = Makejson.makejson(map); Getcode getcode=new Getcode(); url=url+path; String resulst=getcode.getHttpResponse(param1, url,meth.toUpperCase()); String bnei=ParseJson.Json(resulst); assertEquals(bnei,qiwang); } @BeforeTest public void beforeTest() { } @AfterTest public void afterTest() { } }
这就是源码,这就是源码,
那么,你能让我看看你的Excel怎么写的吗,可以
目前支持的断言是断言code的字段,其实还可以丰富,接下来会优化这方面。
运行testng测试
控制台输出
最后的测试报告
测试报告,要感谢飞总的ztest
开源代码 github 传送门 喜欢的可以star。
https://github.com/liwanlei/java_jiekou
出 处:https://www.cnblogs.com/leiziv5/p/8037200.html
最新更新
iframe页面总是提示需要重新登录怎么办
mybatis(CRUD)
2021 全球程序员收入报告出炉,看完我真
Maven插件开发教程
引爆全球的 Log4j2 核弹级漏洞,JNDI 到底是
java 读写 ini 配置文件
动力节点-王妈妈Springboot教程(一)Xml 和
一文搞懂Flink Window机制
jdk8下载安装与配置环境变量(windows)
SpringBoot项目启动即执行某个方法
MongoDB常用命令(2)
MongoDB基本介绍与安装(1)
SQLServer触发器调用JavaWeb接口
SQL Server索引的原理深入解析
SqlServer2016模糊匹配的三种方式及效率问题
SQL中Truncate的用法
sqlserver 多表关联时在where语句中慎用tri
链接服务器读取Mysql---出现消息 7347,级别
SQL Server解惑——为什么你拼接的SQL语句换
MySQL视图了解一下
戏说HTML5
让 HTML5 来为你定位
Asp.net 微信H5唤起支付和支付回调
C# asp.net mvc 创建虚拟目录
浅薄的一些JAVA基础知识
【JS 逆向百例】网洛者反爬练习平台第一
springboot配置swagger2
160_Vue实战:路由模式,404,路由钩子
150_Vue实战:参数传递及重定向
140_Vue实战:路由嵌套