可以使用TestNG DataProvider AND测试套件参数吗?

时间:2009-03-31 18:25:21

标签: testng data-driven-tests

有没有人知道是否有办法在使用 @Parameter 注释的同时使用TestNG DataProvider 进行测试?我们的测试套件具有一些常量配置信息,这些信息通过@Parameter注释传递给测试方法。我们现在想使用DataProvider在一组数据值上运行这些测试。

我理解确定结果参数的顺序的内部问题,但如果可能的话我们需要这个功能。

有什么想法吗?

在一个理想的世界里,我可以这样做:

@Test(dataprovider = "dataLoader")
@Parameters("suiteParam")
public void testMethod(String suiteParam, String fromDataParam) {
...
}

2 个答案:

答案 0 :(得分:9)

嘿,它可能有点笨拙,但为什么不使用@BeforeClass方法将suiteParam本地存储在测试类的字段上,如此。

private String suiteParam;

@BeforeClass
@Parameter("suiteParam")
public void init(String suiteParam) {
  this.suiteParam = suiteParam;
}

通过这种方式,您可以按常规方式使用数据提供程序,并且仍然可以访问套件参数。

答案 1 :(得分:2)

是的,使用使用TestNG's dependency injection capabilies。您可以访问DataProvider中的所有已定义参数。这是需要test_param参数的一些示例DataProvider:

@DataProvider(name = "usesParameter")
public Object[][] provideTestParam(ITestContext context) {
    String testParam = context.getCurrentXmlTest().getParameter("test_param");
    return new Object[][] {{ testParam }};
}

这样,您可以在DataProvider中收集已配置和生成的参数,然后将其用于测试。有关ITestContext类的详细信息,请参阅TestNG JavaDoc