gpt4 book ai didi

testng - 可以将参数传递给TestNG DataProvider吗?

转载 作者:行者123 更新时间:2023-12-03 12:08:31 25 4
gpt4 key购买 nike

我们希望针对一组数据值运行一些测试,以验证每个条件都满足相同条件。数据当前存储在平面文件或简单的Excel电子表格中。

我的第一个想法是创建一个TestNG DataProvider,它将从文件中加载数据,并用于为每个数据值调用一次测试方法。我的问题是,不同的测试需要从不同的文件加载数据,并且似乎没有任何方法可以将参数发送到DataProvider。 有人知道这是否可能吗?

理想情况下,我希望代码如下所示(简化示例):

public class OddTest {
@DataProvider(name = "excelLoader")
public Iterator<Object[]> loadExcelData(String fileName) {
...
}

@Test(dataProvider = "excelLoader" dataProviderParameters = { "data.xls" })
public void checkIsOddWorks(int num)
assertTrue(isOdd(num));
}
}

最佳答案

取自the TestNG docs:

如果您声明@DataProvider以java.lang.reflect.Method作为第一个参数,则TestNG将通过该第一个参数的当前测试方法。当几种测试方法使用相同的@DataProvider并且您希望它根据为其提供数据的测试方法返回不同的值时,此功能特别有用。

例如,以下代码在其@DataProvider中打印测试方法的名称:

@DataProvider(name = "dp")
public Object[][] createData(Method m) {
System.out.println(m.getName()); // print test method name
return new Object[][] { new Object[] { "Cedric" }};
}

@Test(dataProvider = "dp")
public void test1(String s) {
}

@Test(dataProvider = "dp")
public void test2(String s) {
}

并因此显示:
test1
test2

还可以将其与desolat提供的解决方案结合起来,从上下文和方法中确定数据:
    @DataProvider(name = "dp")
public Object[][] foodp(ITestContext ctx, Method method) {
// ...
}

关于testng - 可以将参数传递给TestNG DataProvider吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/666477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com