TestNG 中DataProvider 的用法

使用DataProvider提供数据有两种形式: 
第一种:一种是在测试代码和测试数据放在同一个类中; 
第二种:把所有的数据提供都单独写在一个类里面,当测试数据比较多时,这种方法利于维护。 

DataProvider定义了属性name时,提取数据时可以使用name,没有定义name时,提取数据时直接使用方法名称。 

public class ParamTestWithDataProvider1 {

@DataProvider(name = "test1")
public static Object[][] primeNumbers() {
return new Object[][] { { 2, true ,"hi"}, { 6, false ,"test"}, { 19, true ,"good"},
{ 22, false ,"aha"}, { 23, true ,"loo"} };
}

//参数必须要一致
@Test(dataProvider = "test1")
public void testPrimeNumberChecker(Integer inputNumber,
Boolean expectedResult, String test) {
System.out.println(inputNumber + " " + expectedResult+" "+test);
Assert.assertEquals(expectedResult,
primeNumberChecker.validate(inputNumber));
}
}

第二种是通过DataProviderClass 把测试数据文件引过来

package TestngTest;

import org.testng.annotations.DataProvider;


public class DataProviderMethod {
//无指定数据名称,默认使用方法名
@DataProvider
public static Object[][] NoNameMethod(){
return new Object[][]{
{"DataWithNoName1"},
{"DataWithNoName2"},
{"DataWithNoName3"}
};
}
//指定名称1
@DataProvider(name="dataprovider1")
public static Object[][] dataProvider1(){
return new Object[][]{
{"dataprovider1-1"},
{"dataprovider1-2"}
};
}
//指定名称2
@DataProvider(name="dataprovider2")
public static Object[][] dataProvider2(){
return new Object[][]{
{"dataprovider2-1"},
{"dataprovider2-2"}
};
}
}

java测试代码

package TestngTest;

import org.testng.annotations.Test;


public class DdataProviderTest {
@Test(dataProvider="NoNameMethod",dataProviderClass=DataProviderMethod.class)
public void doTestNG(String testdatas) {
System.out.println("未指定名称,数据源名为方法名NoNameMethod:"+testdatas);
}

@Test(dataProvider="dataprovider1",dataProviderClass=DataProviderMethod.class)
public void doTestNG1(String testdatas){
System.out.println("指定名称,数据源名称选择了dataprovider1:"+testdatas);
}

@Test(dataProvider="dataprovider2",dataProviderClass=DataProviderMethod.class)
public void doTestNG2(String testdatas){
System.out.println("指定名称,数据源名称选择了dataprovider2:"+testdatas);
}
}

来源于:http://yaowenyu.iteye.com/blog/2146031

原文地址:https://www.cnblogs.com/lixiaowei395659729/p/8717992.html