考虑我有数据提供者和测试方法如下
@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返回3个参数,如果我在测试方法中给出3个单独的参数,那么它工作正常。但我需要将其作为单一论点传递。
所以,我创建了一个Class并将其作为方法传递给它。但是错误是抛出**“** org.testng.TestNGException: 数据提供程序正在尝试传递3个参数,但方法TestNG.Login#logintoApplication需要1“****
在我的一些情况下,数据提供者将返回一些n个数值。所以,我需要在测试方法中处理单个参数
请建议解决这个问题。
答案 0 :(得分:1)
您需要在LoginFilterDetails对象中输入3个参数作为属性。在数组中你应该有一些东西
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
}