如何基于附加有方案名称的测试用例ID运行黄瓜方案?

时间:2019-05-03 19:58:47

标签: cucumber cucumber-jvm

我想基于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的数量。 有可能吗?

2 个答案:

答案 0 :(得分:1)

您可以使用name的{​​{1}}属性,如果使用的是cli选项,则可以使用@CucumberOptions选项。它还支持正则表达式。

要运行TC.No:1和TC.No:4,请使用类似

'-n'

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

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

当您从文件中读取ID时,第二个选项是最好的。使用@CucumberOptions(name = { "TC.No:1","TC.No:4" })cucumber.api.cli.Main方法来执行功能。您可以动态创建选项。请参阅此post

CLI参考docs

答案 1 :(得分:0)

不熟悉cumulage-jvm。

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

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

但是,最佳实践是使用标签,如果您有@TCId-xx标签,那将很容易。仍然可以编写一个简单的程序,该程序将扫描所有功能文件并使用基于TC的标记更新方案。方案名称中没有。