【问题标题】:How to run cucumber scenario's based on Test Case ID that is appended with the Scenario name?如何基于附加场景名称的测试用例 ID 运行黄瓜场景?
【发布时间】:2019-05-03 19:58:47
【问题描述】:

我想根据 scanerio 名称包含的测试用例 ID 运行 Cucumber Feature 文件。

我知道我们可以使用@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 cucumber-jvm


    【解决方案1】:

    您可以使用@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.Mainmain() 方法来执行功能。您可以动态创建选项。请参阅此post

    CLI 参考 docs

    【讨论】:

      【解决方案2】:

      不熟悉cucumber-jvm。

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-11
        相关资源
        最近更新 更多