通过修改全局变量在循环中运行testng

时间:2013-09-19 11:47:20

标签: java automation testng

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

基本上我的编码是:

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

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

1 个答案:

答案 0 :(得分: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插件中,您可以在测试结果树视图中获得更多级别。

数据提供程序方法可以生成二维数组,以同时提供多个参数。有关详细信息,请参阅documentation