基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一个WebUI自动化框架(3)使用dataProvider实现数据驱动用例执行

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了基于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实现数据驱动用例执行

 

脚本宝典总结

以上是脚本宝典为你收集整理的基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一个WebUI自动化框架(3)使用dataProvider实现数据驱动用例执行全部内容,希望文章能够帮你解决基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一个WebUI自动化框架(3)使用dataProvider实现数据驱动用例执行所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。