烟台专业网站制作公司,网站建设用英文怎么说,湖北省住房和城乡建设厅网站,购物网站开发jdk一. 什么是TestNG
TestNG是一个开源的自动化测试框架#xff0c;它受JUnit和NUnit启发#xff0c;其中“NG”即表示Next Generation#xff0c;其功能更强大使用更方便。
二. TestNG配置
2.1 POM文件配置
在maven工程的pom.xml文件中加入以下依赖#xff1a;
depe…一. 什么是TestNG
TestNG是一个开源的自动化测试框架它受JUnit和NUnit启发其中“NG”即表示Next Generation其功能更强大使用更方便。
二. TestNG配置
2.1 POM文件配置
在maven工程的pom.xml文件中加入以下依赖
dependencygroupIdorg.testng/groupIdartifactIdtestng/artifactIdversion6.14.2/version/dependency
2.2 TestNG插件安装
三. 用例运行方法
3.1 单个用例
选中该用例-右键Run As -TestNG Test 3.2 单个类的用例
打开类文件空白处右键Run As -TestNG Test
和单个用例一样不同之处只是在类文件里空白处点击右键。此操作会执行该类下所有的测试用例。
3.3 多个类的用例Test Suite
使用testng.xml文件该文件用来管理测试用例并运行testNG。
suite套件就是将所有的测试类整理在一块形成一套测试用例
test测试集是指测试模块一般一个项目可以按照模块分为几部分即不同的test
classes测试集下的所有测试类
class具体测试类name 属性指定测试类的路径
methods测试类下具体的测试方法如果不写此标签则默认包含测试类下的所有方法。
举例本文的testng.xml内容如下
!DOCTYPE suite SYSTEM http://testng.org/testng-1.0.dtd suite nametestng test parallelfalsetest nameAPI testclassesclass namecom.apitest.APITest/class namecom.apitest.APITest2//classes/testtest nameGUI testclassesclass namecom.seletest.FirstWebTest//classes/test/suite 注!DOCTYPE suite SYSTEM http://testng.org/testng-1.0.dtd 必须要添加这是testng.xml文件的规范要求。
运行结果如下 四. TestNG注解
4.1 Before/After注解 4.2 Test注解
Test 注解的作用很简单即用来标识当前方法是测试方法。它可以加很多参数:
1) denpendsOnMethonds: 用来设置用例依赖。 Testpublic void apitest01() {System.out.println(in APITest, apitest01);Assert.assertEquals(false,true);}Test(dependsOnMethods {apitest01})public void apitest02() {System.out.println(in APITest, apitest02);} 如上的两个用例apitest01执行通过则执行apitest02如果apitest01执行失败则apitest02直接跳过不会执行 2) alwaysRun默认是false设置为true时无论什么情况都会运行。一般和dependsOnMethods结合。
Testpublic void apitest01() {System.out.println(in APITest, apitest01);Assert.assertEquals(false,true);}Test(dependsOnMethods {apitest01},alwaysRuntrue)public void apitest02() {System.out.println(in APITest, apitest02);} 如上的两个用例不管apitest01是否失败apitest02都运行。运行结果如下 3) enabled默认是true设置为false时表示用例失效即不运行。使用方法
Test(enabledfalse)
4) Priority设置用例运行的优先级。默认是0优先级P0最高其次是P1高优先级的用例优先运行 Test(priority3)public void apitest01() {System.out.println(in APITest, apitest01 -- P3 );//Assert.assertEquals(false,true);}Test(priority2)public void apitest02() {System.out.println(in APITest, apitest02 -- P2);}Test(priority1)public void apitest03() {System.out.println(in APITest, apitest03 -- P1);}
上述用例的运行结果如下 5timeOut指定测试方法执行的超时时间如果超过指定的毫秒数则认为执行失败并终止执行抛出异常。使用方法
Test(timeOut 1000)
6Groups: 指定用例所属的组一般是对用例进行逻辑划分譬如只想执行一部分用例例如冒烟测试可以定义一个冒烟用例集
Test(groupssmoke)public void apitest01() {System.out.println(in APITest, apitest01 -- P3 );//Assert.assertEquals(false,true);}Test(groupsregression)public void apitest02() {System.out.println(in APITest, apitest02 -- P2);}Test()public void apitest03() {System.out.println(in APITest, apitest03 -- P1);}
注意group需要在testng.xml中加入以下配置 则运行结果如下即“API test”中只有属于smoke组的用例才会执行 五. 用例的传参
即给测试方法传递参数更进一步说如何实现数据-脚本的分离。
5.1 Parameters
需要首先在testng.xml里设置注意此时必须通过testng.xml来运行否则找不到parameter。 Test()Parameters({name,age})public void apitest01(String name, int age) {System.out.println(in APITest, apitest01);System.out.println(name s age is: age .);} 运行结果如下 这种方式传参缺点很明显
·只能通过testng.xml来运行不够灵活
· 只能传递基础类型的参数
· 只能传递一组参数
5.2 DataProvider
DataProvider是更灵活更强大的参数传递方式。它支持各种数据类型的参数可以传递多组参数。其返回值类型是Object类型的二维数组定义如下
DataProvider(nameparaDatas)public Object[][] paraDatas(){Object[][] paras {{zhang san, 20},{li si, 21},{wang wu, 22}};return paras;} 在测试用例的Test方法里使用方法如下
Test(dataProvider paraDatas)public void apitest01(String name, int age) {System.out.println(in APITest, apitest01);System.out.println(name s age is: age .);}
运行结果如下 DataProvider比较灵活且强大但它也有局限即实际上还是在代码中hardcode的方式。如果多一种情况还需要修改caseparaDatas。
5.3 POI技术
Apache POI 是基于 Office Open XML 标准OOXML和 Microsoft 的 OLE 2 复合文档格式OLE2处理各种文件格式的开源项目。简而言之可以使用 Java 读写 MS Excel 文件可以使用 Java 读写 MS Word 和 MS PowerPoint 文件。
本质上它还是使用DataProvider的方式传参但可以真正实现数据-脚本的分离。
这里不多讲了~
此外还可以将数据库查询的结果作为参数传递但本质是一样的。
六. 思考与总结
testNG还有很多很强大的机制例如用例失败重试需要实现IRetryAnalyzer接口相比其他参数的使用其稍微复杂一些有空了再搞吧~
现在我也找了很多测试的朋友做了一个分享技术的交流群共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源没人解答问题坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化性能安全测试开发等等方面有一定建树的技术大牛
分享他们的经验还会分享很多直播讲座和技术沙龙
可以免费学习划重点开源的
qq群号485187702【暗号csdn11】
最后感谢每一个认真阅读我文章的人看着粉丝一路的上涨和关注礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 希望能帮助到你【100%无套路免费领取】