【TestNG】testNG传参的用法和高级应用

一.TestNG用法说明

TestNG的详细教程请看链接:https://blog.csdn.net/df0128/article/details/83243822

二.直接从类中传参

此处需要用到注解@DataProvider来进行传参,
如下定义了一个测试用例,名为TestNgLearn1,其有两个参数传入,param1param2,都是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)

======================&
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值