[英]Java testng single dataprovider multiple test
Scenario: I have a csv file with 10 columns of test data. 场景:我有一个包含10列测试数据的csv文件。 For each column I want to have a test method.
对于每个列,我想要一个测试方法。
Now I know how to use dataprovider to read the csv file and provide the test data to a test method. 现在我知道如何使用dataprovider读取csv文件并将测试数据提供给测试方法。 But how can I use the same testprovider for multiple tests?
但是,我如何使用相同的testprovider进行多次测试?
The dataprovider that I have written for now is reading the csv file and iterating through the csv. 我现在编写的数据提供者正在读取csv文件并迭代csv。
If i understand your question correctly then what you want to do is lets say you have 10 columns and this 10 columns need to be passed to 10 test methods respectively as test data, but you want data provider as same. 如果我正确理解你的问题,那么你想要做的就是让你说你有10列,这10列需要分别作为测试数据传递给10个测试方法,但是你想要数据提供者一样。 My recommendation: 1) Pass Method argument to your dataprovider.
我的建议:1)将Method参数传递给dataprovider。 2) Load whole CSV file into 2D array.
2)将整个CSV文件加载到2D阵列中。 3) Based on test method name that return that column data as test data for that test.
3)基于测试方法名称,返回该列数据作为该测试的测试数据。 Something like below:
如下所示:
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);
}
}
You can easily declare data provider in separate class and reuse it in multiple classes. 您可以轻松地在单独的类中声明数据提供程序,并在多个类中重用它。 Take a look at dataProviderClass parameter of @Test annotation .
看一下@Test注释的dataProviderClass参数 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.