0

我有一个 TestNG 程序,它将某些参数作为命令行的参数。TestNG 以编程方式调用。其中一个参数是“locale”,它表示 US、DE 或 ES 等。如果我指定 US,它将执行运行程序为 US 语言环境指定的测试用例。如果我指定“US,DE”,它适用于美国和德国。如果我指定“ALL”,它将针对枚举中提供的所有可用语言环境运行。

基本上我的编码方式是:

foreach locale 
  set global locale variable to locale
  testng.run()
endfor

这很好用,但问题是每次在 for 循环中执行 testng.run 时都会创建多个 testng 报告。有没有办法修改它,使其作为一个大型测试套件执行和报告,即一个综合报告?

4

1 回答 1

0

我不确定这会满足你的需求,但 TestNG 有一个名为 Data Providers 的功能。首先定义一个数据提供者方法:

@DataProvider(name="locale")
public Object[] createData() {
    return new Object[] {"US", "DE", "ES"};
}

然后,您可以在测试方法中引用数据提供者,接受其数据作为参数:

@Test(dataProvider="locale")
public void doTest(String locale) {
    ...
}

测试方法将为数据提供者提供的每个项目运行一次。我只在 JUnit 中使用了类似的功能,所以我不知道 TestNG 如何呈现单个运行。在 JUnit 的 Eclipse 插件中,您可以在测试结果树视图中获得一个额外的级别。

数据提供者方法可以产生一个二维数组来同时提供几个参数。有关详细信息,请参阅文档

于 2013-09-19T11:58:56.457 回答