如何在 Cucumber 测试套件中订购功能文件?
Posted
技术标签:
【中文标题】如何在 Cucumber 测试套件中订购功能文件?【英文标题】:How to order feature files in Cucumber test suite? 【发布时间】:2016-12-11 10:05:16 【问题描述】:目前,我发现黄瓜测试套件按字母顺序运行功能文件。
如果有任何我可能遗漏的选项/配置,请告诉我。谢谢。
【问题讨论】:
Cucumber 场景必须解耦并且彼此独立,因此它们运行的顺序必须没有区别。如果您的场景依赖于之前执行的场景,我建议您检查您的设计。 我同意你的看法。但是,我需要一种按特定顺序运行它们的方法。 :) 为什么需要按特定顺序运行它们? 如果您在场景之间存在依赖关系,那么我希望这是一项短期工作,因为您将来会有维护的噩梦。 我需要按某种顺序运行它们,因为: - 运行整个 UI 端功能文件需要一个小时。 【参考方案1】:Cucumber 功能/场景按功能文件名的字母顺序运行。
但是,如果您特别指定功能,它们应该按照声明的顺序运行。例如:
@Cucumber.Options(features="automatedTestingServices.feature", "smoketest.feature")
【讨论】:
我们的行为是否相同? (对于蟒蛇)【参考方案2】:在 cucumber 4.2.0 中添加了 cli 选项--order
,参见changelog 和this example。
【讨论】:
【参考方案3】:您可以强制 cucumber 按照您将文件名作为参数传递的顺序运行功能文件。例如,
$ cucumber file3.feature file2.feature file1.feature
将按file3.feature
、file2.feature
、file1.feature
的顺序运行文件。
您还可以按照您想要的顺序创建一个包含功能文件名称的文本文件,每个名称在其单独的行中。例如,假设文件名为feature_order.txt
,其内容如下:
file3.feature
file2.feature
file1.feature
然后您可以运行以下命令以按上述顺序运行文件:
$ cucumber $(cat feature_order.txt)
【讨论】:
【参考方案4】:但是,如果您特别指定功能,它们应该按照声明的顺序运行。例如:
@Cucumber.Options(features="automatedTestingServices.feature", "smoketest.feature")
上面的仍然是按字母顺序排列的。所以它不会有任何区别
【讨论】:
【参考方案5】:如果您将 Junit 5 与 Cucumber 一起使用,您可以像这样订购功能文件。
@Suite
@IncludeEngines("cucumber")
@SelectClasspathResource("this/is/number/one.feature")
@SelectClasspathResource("this/is/number/two.feature")
@SelectClasspathResource("this/is/number/three.feature")
public class RunCucumberTest
【讨论】:
以上是关于如何在 Cucumber 测试套件中订购功能文件?的主要内容,如果未能解决你的问题,请参考以下文章