能否同时使用TestNG DataProvider和测试套件参数?

13

有没有人知道是否有一种方法可以同时使用TestNG的和<@Parameter>注解来测试?我们的测试套件有一些常量配置信息,通过<@Parameter>注解传递给测试方法。现在我们想使用DataProvider来运行这些测试,并对一组数据值进行测试。

我了解确定生成的参数顺序的内部问题,但如果可能的话我们需要此功能。

有什么想法吗?

在理想的情况下,我可以像这样做:

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

10

嘿,可能有点笨重,但为什么不使用@BeforeClass方法将suiteParam本地存储在测试类的字段上呢,像这样。

private String suiteParam;

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

这样你就可以以通常的方式使用你的数据提供程序,并仍然可以访问你的suite param。


2

是的,可以使用TestNG的依赖注入功能。您可以在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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接