一.TestNG用法说明
TestNG的详细教程请看链接:https://blog.csdn.net/df0128/article/details/83243822
二.直接从类中传参
此处需要用到注解@DataProvider
来进行传参,
如下定义了一个测试用例,名为TestNgLearn1
,其有两个参数传入,param1
和param2
,都是int
型。其标注@Test
内部含有一个dataProvider = "provideNumbers"
即为指明其参数来源,其中provideNumbers
为参数来源的那个方法的名称。
除了测试用例外还定义了一个方法叫做provideData
,其标注为@DataProvider
,即说明此方法是一个参数提供方法,其包含多个参数值可供指定,下面分别说明:
1.name参数
name
指定该参数提供者的名称,其他测试用例可以通过该名称调用此方法,其实如果此属性不指定的话,会默认将方法名称作为该数据提供者的名称,即其他用例可以通过方法名称来调用此方法;
如下name="provideNumbers"
中的provideNumbers
即为设定的参数提供者的名称,此名称和测试方法TestNgLearn1
注解中需要的数据提供者名称一致,如下是一个最简单的范例:
public class TestCase1 {
@DataProvider(name = "provideNumbers")
public Object[][] provideData() {
return new Object[][] {
{
10, 20 }, {
100, 110 }, {
200, 210 } };
}
@Test(dataProvider = "provideNumbers", groups= {
"gp1"})
public void TestNgLearn1(int param1, int param2) {
System.out.println("this is TestNG test case1, and param1 is:"+param1+"; param2 is:"+param2);
Assert.assertFalse(false);
}
}
此处数据提供者返回的的内容必须为Object[][]
,即一个二维数组,此处要注意,如上面的例子返回了三组参数,故用例应当会被执行三次,即如下结果:
this is TestNG test case1, and param1 is:10; param2 is:20
this is TestNG test case1, and param1 is:100; param2 is:110
this is TestNG test case1, and param1 is:200; param2 is:210
PASSED: TestNgLearn1(10, 20)
PASSED: TestNgLearn1(100, 110)
PASSED: TestNgLearn1(200, 210)
===============================================
Default test
Tests run: 3, Failures: 0, Skips: 0
===============================================
如上结果符合预期,运行三次,三组值都运行了一次;
2.indices参数
@DataProvider
除了必须定义name外,还有两个值可以指定,一个是indices
,此值指定返回的参数组中的第几个会被使用,编号从0开始,如下范例指定了indices= {1}
,name执行结果应当只有第二组参数值,代码如下:
public class TestCase1 {
@DataProvider(name = "provideNumbers",indices= {
1})
public Object[][] provideData() {
return new Object[][] {
{
10, 20 }, {
100, 110 }, {
200, 210 } };
}
@Test(dataProvider = "provideNumbers", groups= {
"gp1"})
public void TestNgLearn1(int param1, int param2) {
System.out.println("this is TestNG test case1, and param1 is:"+param1+"; param2 is:"+param2);
Assert.assertFalse(false);
}
}
运行结果如下:
this is TestNG test case1, and param1 is:100; param2 is:110
PASSED: TestNgLearn1(100, 110)
===============================================
Default test
Tests run: 1, Failures: 0, Skips: 0
===============================================
如上结果符合预期,只使用了三组参数中的第二组,即编号为1的那一组;注意编号不要超出你返回的列表的大小;
3.parallel参数
此参数意思是是否并发执行,其值可为true
或者false
,默认为false
,如果为true
则会并发执行,范例如下:
public class TestCase1 {
@DataProvider(name = "provideNumbers",parallel=true)
public Object[][] provideData() {
return new Object[][] {
{
10, 20 }, {
100, 110 }, {
200, 210 } };
}
@Test(dataProvider = "provideNumbers", groups= {
"gp1"})
public void TestNgLearn1(int param1, int param2) {
System.out.println("this is TestNG test case1, and param1 is:"+param1+"; param2 is:"+param2);
Assert.assertFalse(false);
}
}
结果如下:
this is TestNG test case1, and param1 is:200; param2 is:210
this is TestNG test case1, and param1 is:10; param2 is:20
this is TestNG test case1, and param1 is:100; param2 is:110
PASSED: TestNgLearn1(100, 110)
PASSED: TestNgLearn1(200, 210)
PASSED: TestNgLearn1(10, 20)
======================&