1 ,TestNG介绍
TestNG 是java的一个单元测试框架,TestNG吸取了Junit框架的思想,形成了更强大的集成测试框架。
2, TestNG特点
支持注解;
灵活的运行配置;
支持多线程、忽略、异常、参数化等测试。
3,@Test是TestNG 最基本的注解,用来将方法标注为测试方法。
4, enable 测试方法是否执行
enable默认是true, 表示执行这个方法,如果设置为false,则在运行时不会执行这个测试方法。
5,dependsOnMethods 依赖方法
dependsOnGroups 依赖组
在依赖的方法运行完成之后运行当前方法,如果依赖方法测试不通过,那么当前方法也不会继续运行了。
依赖的方法可以有多个,格式为:@Test(dependsOnMethods = { "method1" , “method2” })。
在运行时,一个组的方法会一起运行,然后再运行下一个组的方法;
格式为:@Test(groups = "groupName")。
6,timeOut 超时属性
格式:@Test(timeOut = 3000) 设置超时时间,单位为毫秒。
7, 多线程测试
格式:@Test(invocationCount = 3,threadPoolSize = 2)。
参数说明:
invocationCount:线程调用的次数,默认1次。
threadPoolSize:线程池,需与invocationCount组合使用,创建一个线程池子以多线程运行测试方法.可以降低测试方法的运行时间。
8,groups 分组
在运行时,一个组的方法会一起运行,然后再运行下一个组的方法;格式为:@Test(groups = "groupName")。
1,指定特定类
新建两个包,每个包下分别新建类
标签说明:
<suite>: 定义一个套件,一个xml文件只能有一个<suite>,name 用来定义测试套件的名称。
<test>: 表示定义了一个测试,name 定义测试的名称。
<classes>: 表示定义一组测试类。
<class>: 表示定义某个测试类,name 指定要运行的测试类。
2,指定特定方法
指定特定方法即执行特定的测试用例,内容如下:
标签说明:
<suite>: 定义一个套件,一个xml文件只能有一个<suite>,name 用来定义测试套件的名称。
<test>: 表示定义了一个测试,name 定义测试的名称。
<classes>: 表示定义一组测试类。
<class>: 表示定义某个测试类,name 指定要运行的测试类。
<methods>:表示定义一组方法。
<include>:表示包含哪个方法,name指定要运行的测试用例。
TestNg传递参数的两种方式
TestNG提供了2种传递参数的方式:
testng.xml文件获取参数。
@DataProvider传递一些比较复杂的参数。
XML文件配置
优点:使得代码和测试数据分离,方便维护。
缺点:若是需要传递复杂的参数,或者从Java中创建参数(复杂对象,对象从属性文件或者数据库中读取),这种方法就再也不适用。
Parameter传参
思路:
定义xml配置文件,在文件中申明参数。
使用 @Parameters 注解从测试配置 xml 文件获取参数。
DataProvider传送参数
如果需要传递一些复杂的参数,靠xml文件就不太适合了。
很多场景是,测试数据需要从java对象或数据库中获取,这时候,我们就需要通过DataProvider方式来提供测试数据。
思路:
(1)首先定义一个数据源的方法,通过@DataProvider注解来标识。
数据源,是方法提供数据,返回一个二维数组。
@DataProvider(name = "data") 通过该注解来标识这个数据源,name为数据源的名称。
@return 返回一个二维数组。
(2)然后定义一个测试方法,通过@Test(dataProvider="data")属性来获取数据。
通过dataProvider来获取数据,执行的次数会根据数据源提供数据的数量。