如何根据附加场景名称的测试用例 ID 运行 黄瓜场景?

How to run cucumber scenario's based on Test Case ID that is appended with the Scenario name?

我想 运行 基于 scanerio 名称包含的测试用例 ID 的 Cucumber 特征文件。

我知道我们可以使用@CucumberOptions 'features' 标签并指定要执行的行号,例如 "src/test/resources/Folder/myfile.feature:7:12" 这将 运行 第 7 行和第 12 行的场景。但我想 运行 基于 TC ID。

下面是特征文件代码

@Run
Feature: Login Functionality

Scenario: First Test Case(TC.No:1)
    Given I perform action 1

Scenario: Second Test Case(TC.No:2)
  Given I perform action 2

Scenario: Third Test Case(TC.No:3)
    Given I perform action 3

Scenario: Fourth Test Case(TC.No:4)
   Given I perform action 4

Scenario: Fifth Test Case(TC.No:5)
    Given I perform action 5

所有场景都在一个功能中。 对于上面的功能文件代码,我想要一些可以根据 TC Id 执行的方法。例如,我只想执行 TC1、TC2 和 TC5(从场景名称中获取的 TC id)。

有一个 属性 文件,其中包含要执行的 TC Id。我的代码应该读取文件,然后只执行那些 TC id。 这可以帮助我将自动化 TC 的数量减少到 运行。 可能吗?

不熟悉 cucumber-jvm。

但是,这是应该起作用的一般逻辑(基于我的 ruby 黄瓜知识)

hook中可以在before方法下写逻辑获取场景名scenario.name,然后提取TC.No。比较 TC.No 如果它不在您的列表中则跳过。 这是 link,它会提供有关如何跳过场景的信息(在 before 方法中使用此 class) https://junit.org/junit4/javadoc/4.12/org/junit/AssumptionViolatedException.html

但是,最好的做法是使用标签,如果您有 @TCId-xx 标签,事情会很容易。您仍然可以编写一个简单的程序来扫描所有功能文件并使用基于场景名称中的 TC.No 的标签更新场景。

您可以使用 @CucumberOptionsname 属性 或如果您使用的是 cli 选项,则使用 '-n' 选项。它还支持正则表达式。

对 运行 TC.No:1 和 TC.No:4 使用这样的东西

@CucumberOptions(name = { "TC.No:1|TC.No:4" })

@CucumberOptions(name = { "TC.No:1","TC.No:4" })

您可以在此 link 获得更多详细信息。

当您从文件中读取 ID 时,第二个选项是最好的。使用 cucumber.api.cli.Main class main() 方法执行功能。您可以动态创建选项。参考这个post

CLI 参考 docs.