我想基于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的数量。 有可能吗?
答案 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的标记更新方案。方案名称中没有。