我正在使用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;
}
答案 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(在异常时返回空数组)最有意义。