摘要:类似于特别是,但它不是框架的扩展相较于而言,功能更强大,使用起来更加方便,比较适合测试人员来进行集成测试或是接口回归测试。自带生成的测试报告不太美观,可以使用进行美化。
TestNG是一个开源自动化测试框架,TestNG表示下一代(Next Generation的首字母)。 TestNG类似于JUnit(特别是JUnit 4),但它不是JUnit框架的扩展,相较于Junit而言,功能更强大,使用起来更加方便,比较适合测试人员来进行集成测试或是接口回归测试。
TestNG有以下几大特点:使用java和面向对象的功能;
方法的名称就不必受限于某种固定的格式,可以通过注释来识别需要执行的方法;
方法中需要的一些参数可以通过注释传递;
注释是强类型的,所以有错误可以在编译期体现出来;
支持分组测试,依赖测试,并行测试,负载测试等;
支持多线程测试。
描述 @Test 将类或是方法标记为测试的一部分 @BeforeSuite 在该套件的所有测试都运行在注释的方法之前,仅运行一次。 @AfterSuite 在该套件的所有测试都运行在注释的方法之后,仅运行一次 @BeforeClass 在调用当前类的所有测试方法之前执行,注释方法仅运行一次 @AfterClass 在调用当前类的所有测试方法之后执行,注释方法仅运行一次 @BeforeTest 注释的方法将在属于TestNG参数化测试标签内的类的所有测试方法运行之前运行 @AfterTest 注释的方法将在属于 标签内的类的所有测试方法运行之后运行。 @BeforeGroups 此方法是保证在运行属于任何这些组的第一个测试方法之前,该方法被调用 @AfterGroups 此方法是保证运行属于任何这些组的所有测试方法执行之后,该方法被调用 @BeforeMethod 被注释的方法将在每个测试方法之前执行 @AfterMethod 被注释的方法将在每个测试方法之后执行 @DataProvider 被注释的方法的作用是提供测试数据,如果某个测试方法希望从这个DataProvider接收数据,就必须使用一个名字等于这个注解名字的DataProvider @Parameters 介绍如何将参数传递给测试方法
TestNG提供了2种传递参数的方式。
这种方式的优点是使得代码和测试数据分离,方便维护;缺点就是如果需要传递的参数不是基本的java类型,或是需要的值只能在运行时创建,这种方法就不再适用。
这种能够提供比较复杂的参数(也叫data-driven testing)。
我们项目中使用的是第二种
如图示:首先给测试方法添加值为WithdrawBatchQueryLoopData的属性dataProvider,然后提供一个name与之对应的@DataProvider方法,这个方法里的具体实现,就是从配置文件或是数据库中读取数据。
分组测试是TestNG中的创新功能,分组测试使得我们可以进行各种灵活的测试,在想要并行多组不同的测试时,不需要重新进行编译。
分组可以应用在方法上(一个方法可以属于一到多个分组),也可以应用在类上,应用在类上时,这个类中的所有public方法都变成测试方法,即便他们没有被注解,也可以继续在需要增加属性的方法上重复@Test注解。分组执行测试方法有多种形式:
可以通过在testng.xml配置,来指定具体要执行的分组
也可以通过集成到jenkins中,通过参数化构建来设置要执行的分组
还可以通过运行Run Configurations时,设置要执行的分组
需要注意的一点:Group标签会导致@BeforeMethod失效
@BeforeMethod的作用是标明所注解的方法在每一个测试方法运行之前会执行一次。例如: @BeforeMethod Public void beforeMehod() @Test Public void testCase1() @Test Public void testCase2() 正常的执行的顺序为:beforeMehod—> testCase1—> beforeMehod—> testCase2 但是,在将testCase放入某一个Group之后,@BeforeMethod就失效了 @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进行美化。
来源:宜信技术学院 作者:王海燕
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/8886.html
摘要:单元测试框架作为的标准库,是其他单元测试框架的基础。可以和和配合使用编写单元测试。官网地址单元测试覆盖率工具单元测试中还需要用到代码覆盖率工具。代码覆盖率统计工具用来发现没有被测试覆盖的代码,完善单元测试的覆盖率。 在应用程序中,单元是具有一个或多个输入和单个输出的软件中最小可测试部分。单元...
摘要:协议学习常见请求方法学习和学习接口的基本概念接口文档认识接口测试用例编写接口测试工具使用软件测试自动化进阶性能测试性能测试的技术要求很高,不仅仅要对性能测试的指标测试分类测试设计有很深刻的理解。 ...
摘要:大交通研发质量体系建设为了帮助用户更好地完成消费决策闭环,马蜂窝上线了大交通业务,为用户提供购买机票火车票等服务。 质量是决定产品能否成功、企业能否持续发展的关键因素之一。如何做好质量体系建设,这是个比较大的话题,包含的范围很广,也没有固定的衡量标准。 打开一个互联网公司招聘网站,搜索「测试工程师」岗位时,你会发现几乎全部 JD 都包含一条要求「建设或者参与建设所负责业务的质量体系」。...
摘要:大交通研发质量体系建设为了帮助用户更好地完成消费决策闭环,马蜂窝上线了大交通业务,为用户提供购买机票火车票等服务。 质量是决定产品能否成功、企业能否持续发展的关键因素之一。如何做好质量体系建设,这是个比较大的话题,包含的范围很广,也没有固定的衡量标准。 打开一个互联网公司招聘网站,搜索「测试工程师」岗位时,你会发现几乎全部 JD 都包含一条要求「建设或者参与建设所负责业务的质量体系」。...
阅读 1287·2021-11-15 11:37
阅读 2538·2021-09-22 10:56
阅读 3365·2021-09-06 15:11
阅读 782·2021-08-31 09:45
阅读 2877·2021-07-28 11:16
阅读 1789·2019-08-30 15:44
阅读 383·2019-08-30 13:22
阅读 3328·2019-08-30 13:18