问题描述
我正在使用 Maven SureFire、TestNG(扩展 AbstractTestNGCucumberTests)和 Cucumber,并且有几个功能文件,每个文件都有几个场景。我希望能够并行运行一个功能文件中的每个场景,但一次只能运行一个功能文件。这可能吗?
举个例子:
Feature file 1
Scenario 1a
Scenario 1b
Scenario 1c
Feature file 2
Scenario 2a
Scenario 2b
Feature file 3
Scenario 3a
Scenario 3b
Scenario 3c
Scenario 3d
我希望场景 1a、1b 和 1c 在功能文件 1 中并行运行。完成后,从功能 2 等运行场景 2a 和 2b。
@CucumberOptions (
plugin = {
"html:target/cucumber-reports","json:target/cucumber.json","usage:target/cucumber-usage.json"
},tags = "not @disabled",monochrome = true,features = {
"src/test/resources/features/feature1.feature","src/test/resources/features/feature2.feature","src/test/resources/features/feature3.feature",})
public class AllTests extends AbstractTestNGCucumberTests {
@Override
@DataProvider(parallel = true)
public Object[][] scenarios() {
return super.scenarios();
}
}
这是否可以使用配置
谢谢, 斯科特。
解决方法
仅靠配置是不可能的。我这么说的原因是因为您期望从 M <= N
内实现多级并行执行策略,这在今天的 TestNG 中是不可能的。您需要利用套件 xml 文件在更高级别控制并行执行策略,然后可以通过利用 @DataProvider
和 @DataProvider
属性在较低级别进行调整。
完成此操作的最简单方法是执行以下操作:
- 为每个功能文件创建一个 Java 类。
- 创建一个包含“n”个类的套件文件,并将您的并行策略定义为“none”(这将强制 TestNG 选择每个类并按顺序运行它们)
- 不要忘记设置理想的数据提供程序线程数(默认值为 10)并在您的
parallel
中设置属性parallel = true