数据提供者本身可以接受两个类型的参数:Method和ITestContext
在创建@DataProvider方法是可以有四种格式如图:
第一种在上一篇中有学到
1-Methode参数使用
@DataProvider 使用 java.lang.reflect.Method 作为第一个参数,TestNG 会把当前的测试方法当成参数传给第一个参数。
这样不同测@test测试方法可以调用不同的测试数据
package com.lc.testChuanCan02;
import java.lang.reflect.Method;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class testNG10 {
@DataProvider(name = "data1")
public Object[][] testNG10_01(Method method) {
Object[][] data01 = null;
//method.getName()的值是@test测试方法的名称
if(method.getName().equals("testNG10_02")) {
data01 = new Object[][] {{"我是测试方法a","我是测试方法a"}};
}else if(method.getName().equals("testNG10_03")) {
data01 = new Object[][] {{"我是测试方法b","我是测试方法b"}};
}
return data01;
}
@Test(dataProvider = "data1")
public void testNG10_03(String name1,String name2) {
System.out.println("name1:"+name1+";name2:"+name2);
}
}
2-ITestContext参数
给数据提供者提供ITestContext参数像是吧@test方的所在组提供给他;要配合txtng.xml文件使用。
下面是 @DataProvider 数据提供者如果 组名是functional-test( group.equals("functional-test")) 则随机生成10随机数给他测试方法,如果不是就提供2个随机数
package com.lc.testChuanCan02;
import java.util.List;
import java.util.Random;
import org.testng.ITestContext;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class testNG11 {
@DataProvider
public Object\[\]\[\] randomIntegers(ITestContext context){
String\[\] groups = context.getIncludedGroups();
int size = 2 ;
for(String group : groups) {
System.out.println("group=="+group);
if(group.equals("functional-test")) {
size = 10 ;
break;
}
}
Object\[\]\[\] result = new Object\[size\]\[\];
Random r = new Random();
for(int i = 0 ; i < size ; i++) {
result\[i\] = new Object\[\] {new Integer(r.nextInt())};
}
return result;
}
@Test(dataProvider = "randomIntegers",groups = {"unit-test","functional-test"})
public void random(Integer n) {
System.out.println("n="+n);
}
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章