当数据提供者 returns 多个值时,如何处理测试方法中的单个参数?
How to Handle with the single arguments in Test Method when the Data Provider returns multiple value?
假设我有如下数据提供者和测试方法
@DataProvider(name="Login1")
public Object[][] passData() throws IOException
{
ExcelDataConfig config=new ExcelDataConfig(readPropertiesUtility.getFilePath(LoginConstant.excelPath));
int rows=config.getRowCount(0);
Object[][] data=new Object[rows-1][5];
for(int i=0;i<rows-1;i++)
{
data[i][0]=config.getData(0, i+1, 0));
data[i][1]=config.getData(0, i+1, 1);
data[i][2]=config.getData(0, i+1, 2);
}
return data;
}
@Test(dataProvider="Login1")
public void logintoApplication(LoginFilterDetails loginFilterDetails) throws InterruptedException, IOException
{
--etc
--- etc
}
这里,Data Provider returning 了 3 个参数,如果我在测试方法中给出了 3 个单独的参数,那么它工作正常。但我需要将它作为单个参数传递。
所以,我创建了一个 Class 并将其作为参数传递给 method.But 错误抛出为 **"**org.testng.TestNGException:
数据提供者试图传递 3 个参数,但方法 TestNG.Login#logintoApplication 需要 1"****
在我的某些情况下,数据提供者将 return 一些 n 数值。因此,我需要在测试方法中处理单个参数
请建议解决此问题。
您需要将 3 个参数作为属性放入 LoginFilterDetails 对象中。在数组中你应该有
for(int i=0;i<rows-1;i++){
data[i][0]=new LoginFilterDetails(config.getData(0, i+1, 0) );//or whatever is returning 3 args
}
假设我有如下数据提供者和测试方法
@DataProvider(name="Login1")
public Object[][] passData() throws IOException
{
ExcelDataConfig config=new ExcelDataConfig(readPropertiesUtility.getFilePath(LoginConstant.excelPath));
int rows=config.getRowCount(0);
Object[][] data=new Object[rows-1][5];
for(int i=0;i<rows-1;i++)
{
data[i][0]=config.getData(0, i+1, 0));
data[i][1]=config.getData(0, i+1, 1);
data[i][2]=config.getData(0, i+1, 2);
}
return data;
}
@Test(dataProvider="Login1")
public void logintoApplication(LoginFilterDetails loginFilterDetails) throws InterruptedException, IOException
{
--etc
--- etc
}
这里,Data Provider returning 了 3 个参数,如果我在测试方法中给出了 3 个单独的参数,那么它工作正常。但我需要将它作为单个参数传递。
所以,我创建了一个 Class 并将其作为参数传递给 method.But 错误抛出为 **"**org.testng.TestNGException: 数据提供者试图传递 3 个参数,但方法 TestNG.Login#logintoApplication 需要 1"****
在我的某些情况下,数据提供者将 return 一些 n 数值。因此,我需要在测试方法中处理单个参数
请建议解决此问题。
您需要将 3 个参数作为属性放入 LoginFilterDetails 对象中。在数组中你应该有
for(int i=0;i<rows-1;i++){
data[i][0]=new LoginFilterDetails(config.getData(0, i+1, 0) );//or whatever is returning 3 args
}