testng使用DataProvider+Excel实现DDT
DDT,即数据驱动测试 Data Driver Test,我曾经记录了一篇关于python的DDT框架(Excel+DDT数据驱动实例),那么java中的DDT是怎么样的呢?在java中,可以用testng的DataProvider和Excel实现。
首先建一个文档TestData.xlsx,里面内容如下:
然后写一个读excel的公共类,代码如下:
/*** @author Helen * @date 2018年6月5日 */ package common;import java.io.File; import java.io.FileInputStream; import java.io.IOException;import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; /*** 描述:excel事件处理*/ public class MyExcel { /*读取excel文件中的数据,并生成数组*/@SuppressWarnings("deprecation")public Object[][] readExcel(String filePath,String sheetName) throws IOException {BaseData bdata = new BaseData();File file = new File(bdata.getFilePath(filePath));//获取文件FileInputStream fileInputStream = new FileInputStream(file);//读数据 XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);XSSFSheet sheet = workbook.getSheet(sheetName);//读取指定标签页的数据int rowNum = sheet.getPhysicalNumberOfRows();//获取行数(获取的是物理行数,也就是不包括那些空行(隔行)的情况)int columNum = sheet.getRow(0).getPhysicalNumberOfCells();//获取列数 Object[][] data = new Object[rowNum-1][columNum];//因为第一行作为字段名,不需要记录,所以只有[rowNum-1]行for(int i=1;i<rowNum;i++) {//从第二行开始取值for (int h = 0; h < columNum; h++) {sheet.getRow(i).getCell(h).setCellType(Cell.CELL_TYPE_STRING);//先把类型设置为stringdata[i-1][h] = sheet.getRow(i).getCell(h).getStringCellValue();//填充数组 }}workbook.close();return data;}}
excel的支持还需要在pom.xml加入如下内容
<!--加入对excel的读写支持--><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>
其次,写一个数据源公共类(数据源也可以直接写在测试类中,如果写在测试类中就不用标名数据源所在class),代码如下:
/*** @author Helen * @date 2018年6月11日 */ package jinengxia_apiTest;import common.MyExcel; import java.io.IOException; import org.testng.annotations.DataProvider;/*** 描述:接口测试的数据源*/ public class myApiTestData {MyExcel myExcel = new MyExcel();@DataProvider(name = "loginData")public Object[][] getLoginData() throws IOException {return myExcel.readExcel("src/test/java/testFile/TestData.xlsx","login");} }
最后调用数据源,代码如下:
/*** @author Helen * @date 2018年6月5日 */ package jinengxia_apiTest;import static org.testng.Assert.assertEquals;import java.io.IOException; import java.net.URI; import java.net.URISyntaxException;import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.methods.RequestBuilder; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.testng.annotations.DataProvider; import org.testng.annotations.Test;import common.MyExcel; import net.sf.json.JSONObject;/*** 描述:用户授权相关接口*/ public class UserAuthorization {CloseableHttpClient httpCilent = HttpClients.createDefault();HttpResponse httpResponse;MyExcel myExcel = new MyExcel();@Test(description = "用户登录",dataProvider="loginData",dataProviderClass=myApiTestData.class)public void login(String username,String password) throws URISyntaxException, ClientProtocolException, IOException {HttpUriRequest httpUriRequest = RequestBuilder.post().setUri(new URI("http://api.**.***.com/**")).addParameter("username", username).addParameter("password", password).build();HttpClientContext localContext = HttpClientContext.create();// 创建本地HTTP上下文,用于获取请求头cookies等内容httpResponse = httpCilent.execute(httpUriRequest, localContext);String strResult = EntityUtils.toString(httpResponse.getEntity());// 获得返回的结果JSONObject jsonObject = JSONObject.fromObject(strResult);assertEquals(jsonObject.get("message"), "登录成功");}}
执行测试,结果如下:
转载于:https://www.cnblogs.com/helenMemery/p/9167191.html
testng使用DataProvider+Excel实现DDT相关推荐
- testNG的DataProvider返回IteratorObject[]的妙用
TestNG中使用DataProvider有如下好处: 1. 在执行用例的时候,dataProvider迭代中的每组数据都是作为一个用例执行,实现数据驱动执行 2. 在测试数据有规律的情况下,免去了在 ...
- python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告
1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请求参数 ...
- python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)
可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html 原文地址https://ww ...
- TestNG参数– DataProvider和XML
TestNG methods can have arguments also. There are two ways we can inject method arguments: TestNG方法也 ...
- python excel取数 生成报告_python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)...
可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html
- selenium使用TestNG实现DDT
TestNG和excel文件实现DDT(Data Driver Test) 准备一个test-data.xlsx文件,并且放到eclipse项目下. 1.准备test_data.xlsx文件 2.利用 ...
- testNg自动化,读取excel的数据
自己写了一个testng执行excel用例的小程序,主要是运行.xlsx的,需要支持xls可以自己扩展,分享一下.下载地址:http://yun.baidu.com/share/link?sharei ...
- TestNG中的参数化– DataProvider和TestNG XML(带有示例)
测试自动化,或所谓的自动化测试,并不像听起来那样容易. 必须考虑所有可能的用户交互的所有排列和组合,并且在此基础上,您将必须创建测试脚本以通过多种浏览器和OS组合来验证Web应用程序. 这就是参数化在 ...
- TestNG:在一个测试类中使用@DataProvider依次运行测试
许多Java开发人员和自动化测试工程师在他们的工作中都使用TestNG作为测试框架. 我也不例外. 这是一个显而易见的选择,因为TestNG提供了非常强大的工具集,使处理各种测试变得更加容易. 为了证 ...
最新文章
- 中学再不学编程就晚了?MIT、JHU研究:程序员大脑思考代码的机制不对劲
- 剑指Offer:剪绳子(动态规划、贪婪算法)
- Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)
- 一些不常用的代码汇总(不断更新)
- 《深入理解C++11:C++ 11新特性解析与应用》——1.3 C++11特性的分类
- SQL Server 查询性能优化——覆盖索引(二)
- Request-reply messaging
- 【Vue.js源码解析 二】-- 虚拟 DOM
- 苹果x屏幕出现一条绿线_部分用户反映苹果 iPhone 12 屏幕出现划痕 - iPhone 12
- Android 系统性能优化(53)---功耗优化battery-historian V2.0的数据获取
- bugly android8.1加固,2020-09-27 Bugly Android热更新使用指南
- 电脑画图和计算机不见了,电脑中自带的Window画图工具不见了如何恢复
- vue3.0中使用百度离线地图
- dwg如何转换成pdf格式?
- 基于opencv和pillow实现人脸识别系统(附demo)
- Shell脚本之正则表达式以及文本编辑器
- 怎么查看一段时间的计算机ip,如何查看电脑中使用过的历史IP地址
- 处理器_深度学习及 KPU 基础知识
- AMQ9208: Error on receive from host,AMQ9999: Channel ‘ACLIENT‘ to host ‘192.168.159.1‘ ended abnorma
- php教程制作相册实例,H5和CSS3制作一个相册的代码实例
热门文章
- Java常用设计模式————原型模式(二)之深拷贝与浅拷贝
- c++ 访问控制与封装
- mysql和维信公众号_mysql实用指南
- dbm和mysql使用场景_mysql基本用法总结
- npm install packagename 安装失败的解决办法
- 非root用户组启动sftp_如何在 Debian 10 中配置 Chroot 环境的 SFTP 服务 | Linux 中国
- oracle将字符串转化为blob,oracle String类型转换成blob类型插入
- html代码在线分析,网站html代码解析
- PyCharm 设置背景图片
- 判断三角形是否是直角三角形