TestNG 是一个开源自动化测试框架,TestNG 表示下一代(Next Generation 的首字母)。 TestNG 类似于 JUnit(特别是 JUnit 4),但它不是 JUnit 框架的扩展,相较于 Junit 而言,功能更强大,使用起来更加方便,比较适合测试人员来进行集成测试或是接口回归测试。
TestNG 有以下几大特点:
使用 java 和面向对象的功能
方法的名称就不必受限于某种固定的格式,可以通过注释来识别需要执行的方法;
方法中需要的一些参数可以通过注释传递;
注释是强类型的,所以有错误可以在编译期体现出来;
支持分组测试,依赖测试,并行测试,负载测试等
支持多线程测试
TestNG 常用的注释类型
TestNG 参数化测试
TestNG 提供了 2 种传递参数的方式。
第一种: testng.xml 这种方式的优点是使得代码和测试数据分离,方便维护;缺点就是如果需要传递的参数不是基本的 java 类型,或是需要的值只能在运行时创建,这种方法就不再适用。
第二种:@DataProvider 这种能够提供比较复杂的参数(也叫 data-driven testing)。
我们项目中使用的是第二种
如图示:首先给测试方法添加值为 WithdrawBatchQueryLoopData 的属性 dataProvider,然后提供一个 name 与之对应的 @DataProvider 方法,这个方法里的具体实现,就是从配置文件或是数据库中读取数据。
TestNG 分组测试
分组测试是 TestNG 中的创新功能,分组测试使得我们可以进行各种灵活的测试,在想要并行多组不同的测试时,不需要重新进行编译。
分组可以应用在方法上(一个方法可以属于一到多个分组),也可以应用在类上,应用在类上时,这个类中的所有 public 方法都变成测试方法,即便他们没有被注解,也可以继续在需要增加属性的方法上重复 @Test 注解。分组执行测试方法有多种形式:
可以通过在 testng.xml 配置,来指定具体要执行的分组
也可以通过集成到 jenkins 中,通过参数化构建来设置要执行的分组
还可以通过运行 Run Configurations 时,设置要执行的分组
需要注意的一点:Group 标签会导致 @BeforeMethod 失效
@BeforeMethod 的作用是标明所注解的方法在每一个测试方法运行之前会执行一次。例如:
1
2
3
4
5
6 | @BeforeMethod
Public ``void
beforeMehod()
@Test
Public ``void
testCase1()
@Test
Public ``void
testCase2()
正常的执行的顺序为:beforeMehod—> testCase1—> beforeMehod—> testCase2
但是,在将 testCase 放入某一个 Group 之后,@BeforeMethod 就失效了
1
2
3
4
5
6 | @BeforeMethod
Public ``void
beforeMehod()
@Test(groups = ``"group1"``)
Public ``void
testCase1()
@Test(groups = ``"group1"``)
Public ``void
testCase2()
再次执行脚本,执行顺序变为 testCase1—>testCase2
解决方法:
1、将 @BeforeMethod 同样加入 group1
2、设置 @BeforeMethod 的属性 alwaysRun=true
TestNG 依赖测试
我们经常会遇到要测试的多个接口之间存在依赖关系,即某一个接口的执行需要依赖上一个接口的返回结果,比如执行批付查询时,需要先执行批量代付,那么这时就使用到了 TestNG 的依赖测试,TestNG 使用 dependsOnMethods 配合 alwaysRun 来设置测试方法之间的依赖关系,使用 dependsOnGroups 来设置分组之间的依赖关系
强依赖:在测试方法运行之前,所有的依赖方法都必须运行并且成功,哪怕只有一个失败,测试方法都不会被调用(是 skip 而不是 fail)
软依赖(alwaysRun=true):测试方法在依赖方法运行之后总是会被执行,即便某些依赖方法运行失败。
TestNG 预期异常测试
测试中,有时候我们期望某些代码抛出异常。
TestNG 通过 @Test(expectedExceptions) 来判断期待的异常, 并且判断 Error Message
TestNG 测试报告
执行完测试用例之后,会在项目的 test-output(默认目录)下生成测试报告
打开 index.html 文件可以看到测试结果摘要,包括:套件名、测试用例成功数、测试用例失败数、测试用例忽略数、执行时间和 testng.xml 文件。
测试用例都成功的话,测试结果以绿底标志,测试用例有失败的话,测试结果以红底标志。testNG 自带生成的测试报告不太美观,可以使用 testng-xslt 进行美化。
本文转载自宜信技术学院网站。
原文链接:http://college.creditease.cn/detail/196
评论