@DataProvider返回100列值

时间:2017-07-03 19:14:39

标签: testng testng-dataprovider

我正在使用TestNG框架进行自动化。 DataProvider方法从Excel工作表返回每行100个列值(测试所需的数据)。我需要在@Test中使用它们。如何在@Test方法中传递100个参数?有没有简单的方法呢?在@Test方法中编写100个参数很困难。这样做的其他方式是什么?

@DataProvider(name="InputData")
public Object[][] InputData() throws IOException
{
    Object[][] data = testData(dataFile,"Sheet1");
    return data;
}


@Factory(dataProvider = "InputData")
public A_Test(String a,String b, , , , , , , , , , , )
{

        this.stream=a;
        this.Keyword=b;

}

1 个答案:

答案 0 :(得分:2)

只需通过varaggs String... str

@Factory(dataProvider = "InputData")
public A_Test(String... str) {
}

需要考虑的一些事项

<强> 1。大而难以理解的测试报告

每个调用都会单独记录,包含所有参数。即使有大约5个参数和大约50个调用,它也变得不可读。

<强> 2。异常处理

在数据提供程序中执行复杂逻辑不是一个好主意。当@DataProvider中发生异常时,将跳过使用它的所有测试。 当您在@DataProvider中读取Excel文件时,由于找不到文件,文件太大,文件格式错误等原因可能会失败。

最有可能的是,您更喜欢这些测试失败,因此您的构建也会失败。有关可能的解决方案,请参阅http://rolf-engelhard.de/2011/10/fail-instead-of-skip-a-test-when-testngs-dataprovider-throws-an-exception/。对我来说,解决方案1(测试数据提供者)或2(在异常时返回空数组)最有意义。