方案: 我有一个包含10列测试数据的csv文件。对于每个列,我想要一个测试方法。
现在我知道如何使用dataprovider读取csv文件并将测试数据提供给测试方法。但是,我如何使用相同的testprovider进行多次测试?
我现在编写的数据提供者正在读取csv文件并迭代csv。
答案 0 :(得分:2)
如果我正确理解你的问题,那么你想要做的就是让你说有10列,这10列需要分别作为测试数据传递给10个测试方法,但是你想要数据提供者一样。我的建议: 1)将Method参数传递给dataprovider。 2)将整个CSV文件加载到2D阵列中。 3)基于测试方法名称,返回该列数据作为该测试的测试数据。 如下所示:
import java.lang.reflect.Method;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class TestNGTest {
@DataProvider
public Object[][] dp(Method method)
{
System.out.println("Test method : "+method.getName());
if(method.getName().equals("test1"))
return new Object[][]{{method.getName()}};
else if(method.getName().equals("test2"))
return new Object[][]{{method.getName()}};
else
return new Object[][]{};
}
@Test(dataProvider="dp")
public void test1(String name)
{
System.out.println("DP -->"+name);
}
@Test(dataProvider="dp")
public void test2(String name)
{
System.out.println("DP -->"+name);
}
}
答案 1 :(得分:1)
您可以轻松地在单独的类中声明数据提供程序,并在多个类中重用它。看看dataProviderClass parameter of @Test annotation。