如何在 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.featurefile2.featurefile1.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 测试套件中订购功能文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过命令提示符和使用 Maven 的 jenkins 运行单个黄瓜功能文件?

在 Behat 中分离测试套件

如何在Ruby方法中处理运行Cucumber功能?

如何在不重复场景的情况下在黄瓜测试中编写功能?

安排 Cucumber 测试功能重复运行

如何在步骤定义中访问Cucumber步骤名称?