运行 个 cucumber 特征文件中的并行场景,一次一个特征文件

Run scenarios in a cucumber feature file in parallel, one feature file at a time

我正在使用 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

这是 class 当前 运行 所有功能文件中的所有场景的测试。

@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();
    }
}

这是否可能使用配置

谢谢, 斯科特

这仅靠配置是不可能的。我这样说的原因是因为您期望仅在 @DataProvider 内使用多级并行执行策略,这在今天的 TestNG 中是不可能的。您需要利用套件 xml 文件来控制更高级别的并行执行策略,然后可以通过利用 @DataProviderparallel 属性在较低级别进行调整.

完成此操作的最简单方法是执行以下操作:

  1. 为每个功能文件创建一个 Java class。
  2. 创建一个包含“n”classes 的套件文件,并将并行策略定义为“none”(这将强制 TestNG 选择每个 classes 和运行 他们按顺序)
  3. 不要忘记设置所需的数据提供程序线程数(默认值为 10)并在 @DataProvider
  4. 中设置属性 parallel = true