基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一个WebUI自动化框架(3)使用dataProvider实现数据驱动用例执行
2021/12/25 9:11:20
本文主要是介绍基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一个WebUI自动化框架(3)使用dataProvider实现数据驱动用例执行,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在测试一个系统的时候,通常需要对同一个模块的用例输入各种不一样的数据,验证实际结果是否达到了我们期望值,此时如果不对测试数据单独出来维护,会使得测试用例与测试数据的耦合度很高,难以维护,当后期我们想要提供一批新的测试数据,那么我们就得在测试用例中把所有的测试数据全都手动修改一遍,操作很繁琐,下面举个实际例子。
我们现在想要测试百度输入框,想测试输入不同数据(手机号、人名、电影名、英文、特殊字符)等,在不使用数据驱动之前的做法是:在每条测试用例中手动输入测试数据,执行相应场景测试,代码如下:
//测试输入手机号 @Test public void test_baidu_01(){ BaiduPage baiduPage=new BaiduPage(driver); baiduPage.inputData("13211112222"); BaiduFlow baiduFlow=new BaiduFlow(driver); baiduFlow.selectTime("最近一月"); } //测试输入人名 @Test public void test_baidu_02(){ BaiduPage baiduPage=new BaiduPage(driver); baiduPage.inputData("筱筱创"); BaiduFlow baiduFlow=new BaiduFlow(driver); baiduFlow.selectTime("最近一月"); } //测试输入电影名 @Test public void test_baidu_03(){ BaiduPage baiduPage=new BaiduPage(driver); baiduPage.inputData("误杀2"); BaiduFlow baiduFlow=new BaiduFlow(driver); baiduFlow.selectTime("最近一月"); } //测试输入英文 @Test public void test_baidu_04(){ BaiduPage baiduPage=new BaiduPage(driver); baiduPage.inputData("aaabbb"); BaiduFlow baiduFlow=new BaiduFlow(driver); baiduFlow.selectTime("最近一月"); } //测试输入特殊字符 @Test public void test_baidu_05(){ BaiduPage baiduPage=new BaiduPage(driver); baiduPage.inputData("#@!$%^"); BaiduFlow baiduFlow=new BaiduFlow(driver); baiduFlow.selectTime("最近一月"); }
从上面的代码发现了什么问题:(1)我们当前只是想验证输入框输入各种不同的数据,其他的用例操作全都一样,但不得不写长篇大论的代码去完成输入框的各个输入框的场景测试
(2)代码的耦合度非常高,每个用例都重复出现相同的操作逻辑
(3)后期我们想要脚本跑一套新的数据,只能在每个测试方法下逐条修改测试数据,非常繁琐。
为了解决次现象问题,我们引入了testng提供的dataProvider方式,使用方法:(1)编写一个提供数据的方法,用@DataProvider注解标注这个方法,注意:该方法一般只支持返回一维数组或者二维数组数据,其他类型数据是返回不了的。
(2)在测试方法中,使用@Test(dataProvider="提供数据的方法名"),即可完成数据驱动,代码如下:
@Test(dataProvider = "getInputData") public void test_baidu_06(String data){ BaiduPage baiduPage=new BaiduPage(driver); baiduPage.inputData(data); BaiduFlow baiduFlow=new BaiduFlow(driver); baiduFlow.selectTime("最近一月"); } @DataProvider public Object[][] getInputData(){ Object[][] datas={ {"13211112222"}, {"筱筱创"}, {"误杀2"}, {"aaabbb"}, {"#@!$%^"}, }; return datas; }
对比一下使用数据驱动前后的代码:显然使得测试用例类简洁了许多,后期维护数据也方便了许多。
代码执行效果:
这篇关于基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一个WebUI自动化框架(3)使用dataProvider实现数据驱动用例执行的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南