本文介绍在TestNG使用过程中,部分常用注解的使用方法
注解@DataProvider
①当DataProvider后添加name=XX属性时,此时@Test(dataProvider = "XX"),两个值要相同,可查看第1行代码与第6行代码。
执行代码如下:
@Test(dataProvider = "tb")
public void test(Integer id, String name) {
System.out.println("编号:"+id+", 姓名:"+name);
}
@DataProvider(name ="tb")
public Object[][] dpTest() {
return new Object[][] {
new Object[] { 1, "Lucy" },
new Object[] { 2, "Jack" },
};
}
②当DataProvider后没有添加name属性时,此时@Test(dataProvider = "XX"),即XX等于添加DataProvider方法的方法名称,可结合第1行、第6行、第7行代码查看。
执行代码如下:
@Test(dataProvider = "dpTest")
public void test(Integer id, String name) {
System.out.println("编号:"+id+", 姓名:"+name);
}
@DataProvider
public Object[][] dpTest() {
return new Object[][] {
new Object[] { 1, "Lucy" },
new Object[] { 2, "Jack" },
};
}
注解@Test
①当属性值为dataProvider,@Test注解会循环每行数据,代码与执行结果如下:
/*
*代码行
*/
@Test(dataProvider = "dpTest")
public void test(Integer id, String name) {
System.out.println("编号:"+id+", 姓名:"+name);
}
@DataProvider
public Object[][] dpTest() {
return new Object[][] {
new Object[] { 1, "Lucy" },
new Object[] { 2, "Jack" },
};
}
执行结果:
编号:1, 姓名:Lucy
编号:2, 姓名:Jack
PASSED: f(1, "Lucy")
PASSED: f(2, "Jack")
===============================================
Default test
Tests run: 2, Failures: 0, Skips: 0
===============================================
②当属性值为dependsOnGroups
执行代码:
若groups属性的书写方式为代码块中的第1行,则属性dependsOnGroups可以按照代码块中的第12行的方式进行书写,使用*进行匹配。
//@Test(groups = {"group1.a"})
@Test(groups = {"group1"})
public void test1() {
System.out.println("group1-test1");
}
@Test(groups = {"group1"})
public void test2() {
System.out.println("group1-test2");
//Assert.assertEquals("test02", "test02");
}
//@Test(dependsOnGroups = {"group1.*"})
@Test(dependsOnGroups = {"group1"})
public void test3() {
System.out.println("group1-test3");
}
执行结果:
注意:若上方示例代码块中的第10行执行结果为false,则test3()的执行状态为skipped;即如果想要带“dependsOnGroups”属性的方法执行通过,必须相关联的“groups”属性的方法也全部要执行通过。
group1-test1
group1-test2
group1-test3
PASSED: test1
PASSED: test2
PASSED: test3
===============================================
Default test
Tests run: 3, Failures: 0, Skips: 0
===============================================
③当属性值为dependsOnMethods,即可设置测试方法依赖于哪些方法去执行
@Test
public void test1() {
System.out.println("group1-test1");
}
@Test
public void test2() {
System.out.println("group1-test2");
}
//当依赖多个方法时,可继续在dependsOnMethods={"",""}进行追加,用逗号分隔
@Test(dependsOnMethods={"test1","test2"})
public void test3() {
System.out.println("group1-test3");
}
④当属性为priority,可设置用例方法执行的优先级
@Test(priority=3)
public void test1() {
System.out.println("group1-test1");
}
@Test(priority=2)
public void test2() {
System.out.println("group1-test2");
}
@Test(priority=1)
public void test3() {
System.out.println("group1-test3");
}
执行结果
//可以看到测试方法的执行顺序根据priority设置的顺序进行了排序
group1-test3
group1-test2
group1-test1
PASSED: test3
PASSED: test2
PASSED: test1
===============================================
Default test
Tests run: 3, Failures: 0, Skips: 0
===============================================
⑤当属性为enabled,可根据属性值“true或者false”来控制测试方法是否执行
@Test(enabled = true)
public void test1() {
System.out.println("group1-test1");
}
@Test(enabled = false)
public void test2() {
System.out.println("group1-test2");
}
@Test(enabled = true)
public void test3() {
System.out.println("group1-test3");
}
执行结果:
//因为test2方法中的enabled=false,即在输出结果中,test2方法没有执行
group1-test1
group1-test3
PASSED: test1
PASSED: test3
===============================================
Default test
Tests run: 2, Failures: 0, Skips: 0
===============================================
⑥当属性为invocationCount、invocationTimeOut、threadPoolSize
invocationCount | 该方法被执行的次数 |
invocationTimeOut | 此测试在所有调用计数的累积时间内应花费的最大毫秒数。如果未指定invocationCount,则会忽略此属性。 |
threadPoolSize | 此方法的线程池的大小。该方法将根据invocationCount的指定从多个线程调用。 注意:如果未指定invocationCount,则会忽略此属性 |
//本段代码执行结果,将使用3个线程完成总共6次的方法调用
@Test(invocationCount=6,invocationTimeOut=100,threadPoolSize=3)
public void test1() {
System.out.println("OK");
}
执行结果:
[ThreadUtil] Starting executor timeOut:0ms workers:6 threadPoolSize:3
OK
OK
OK
OK
OK
OK
PASSED: test1
PASSED: test1
PASSED: test1
PASSED: test1
PASSED: test1
PASSED: test1
===============================================
Default test
Tests run: 6, Failures: 0, Skips: 0
===============================================
如需了解更多,请前往TestNG官网进行查阅学习
https://testng.org/doc/documentation-main.html#test-methods