当数据提供程序返回多个值时,如何处理Test Method中的单个参数?

时间:2016-05-30 17:35:47

标签: testng testng-dataprovider

考虑我有数据提供者和测试方法如下

@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个数值。所以,我需要在测试方法中处理单个参数

请建议解决这个问题。

1 个答案:

答案 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
}