testng执行参数_testng参数化(提供测试数据)

testng提供测试数据的两个注释:@DataProvide和@Parameter

一、通过testng.xml中设置参数

(实际上testng.xml只是一个名字,可以起任何一个名字,只要是.xml文件,然后文件格式按照testng的文档格式DTD来就可以了)

testng.xml中的内容:

.java文件的测试用例中通过parameters获得数据

使用方法1:

@Test(parameters="para1")

public void testcase(String para1){

具体的测试用例,参数中的para1自动获取@Test中声明的变量,读取的是testng的xml文件中声明的参数para1的value值

}

如果有多个参数,可以使用这种方式:@Test(parameters={"para1","para2"})

使用方法2:

@Parameter({"para1","para2"})

@Test

具体的测试用例(参数@Parameter写在了@Test前面)

具体代码如下:

import org.testng.annotations.Test;

public class paramer {

@Test(parameters ={"para1","para2"})

public  void showparamer(String para11,String para22){

System.out.println("testng获得的参数para1如下:"+para11);

System.out.println("testng获得的参数para2如下:"+para22);;

}

}

说明:

1.测试用例中设置的参数名随意,但是数量一定要和@Parameter中提供的数量一致,按照testng.xml中定义的顺序来取值的

2.可以声明在或者级别,在下的会覆盖在下声明的同名变量

3..java的测试用例中,可以通过@Optional("参数")来声明变量,如果没有在testng.xml中没有找到参数,会用@Optional("")中声明的参数

例如下面的代码,testng中没有声明para1和para2时,执行用例时会直接复制test1和test2

import org.testng.annotations.Optional;

import org.testng.annotations.Test;

public class paramer {

@Test(parameters ={"para1","para2"})

public  void showparamer(@Optional("test1") String para11, @Optional("test2") String para22){

System.out.println("testng获得的参数para1如下:"+para11);

System.out.println("testng获得的参数para2如下:"+para22);;

}

}

二、通过注释@Dataprovide获得参数

(testng.xml只能传递简单的参数,如果是循环遍历的使用不同的参数则不可以实现。这时可以使用@Dataprovide来提供数据)

提供数据的方法:

@DataProvider(name = "dataprovider1")

public Object[][] dataprovide(){

return new Object[][]{{1,2,3},{3,2,1}};

}

说明:

1.@DataProvide只能返回Object数组结果

2.Object的行中的每一列标识一个参数(比如上面的例子是3个参数),行数决定了调用的方法要执行的次数(比如上面的例子是执行2次)

调用数据方法:

@Test(dataprovide="XXX")

说明:

1.XXX为@DataProvide声明的一个名字,返回的是一个Object数组

2.方法的执行次数为赋值参数的遍数。比如提供数组为1行,则只执行一次;如果是数组为3行,则执行3次。

其他扩展:

1.@DataProvide写在单独的class里,增强复用性。

这时调用该数据的方法为:@Test(dataprovide="XXX",dataClass=YYY.class)

说明:读取YYY.class下的@DataProvide为XXX的Object数组数据

2.@DataProvide下定义的数组,通过其他文件读取,比如读取excel,返回一个Object数组

3.@DataProvide可以通过parallel实现并行执行线程,默认10个,可以在testng.xml中进行修改()

@DataProvider(name = "dataprovider1",parallel = true)

public Object[][] dataprovide(){

return new Object[][]{{1,2},{2,1}};

}

@Test(dataProvider = "dataprovide")

public void showDataprovide(int a,int b,Method c){

System.out.println("DataProvider获得的参数para1如下:"+a);

System.out.println("DataProvider获得的参数para2如下:"+b);;

System.out.println("DataProvider获得的参数para2如下:"+c.getName());

}

4.@DataProvide和@Parameters不能同时声明,但是可以通过其他方法实现同时使用。

String testId = context.getCurrentXmlTest().getParameter("test_id");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值