我有两个黄瓜功能(DeleteAccountingYear.feature和AddAccountingYear.feature)。 我该怎么做才能使第二个功能(AddAccountingYear.feature)在第一个功能(AddAccountingYear.feature)之前运行。如何使功能在其他之前运行
回答
从官高的网站 - https://jkotests.wordpress.com/2013/08/22/specify-execution-order-of-cucumber-features/运行顺序按以下方式确定:
- 按字母顺序按特征文件目录的场景特征文件 内
- 按字母顺序由特征文件名
- 订单
因此,要在另一个功能之前运行一个功能,您可以更改功能文件的名称或将其放入单独的功能文件夹中首先按字母顺序排列的名称。
但是,让所有测试独立于另一个测试是一种很好的做法。最简单的方法之一是使用mock来创建数据(即要删除的日期),但这并不总是一种选择。另一种方法是在删除测试的设置中创建要删除的数据。这样做的不利之处在于它是重复工作,但是测试运行的顺序并不重要。现在这可能不是问题,但是使用更大的测试套件和/或使用测试repo的多个编码器可能难以仅基于字母排序来维持测试排序。
另一个选择是组合添加和删除测试。这违背了一个测试应该测试一件事的通用规则,但如果您的测试需要很长时间才能运行,并且将添加数据步骤添加到删除设置中,这通常会是一种实用的方法,这会为您的测试套件增加大量时间。
编辑:在阅读指向Justin Ko网站的链接后,您可以指定在运行黄瓜时运行的功能,并且它会按照您提供的顺序运行它们。对于任何你不关心订单的人,都可以把整个特性文件夹放在最后,黄瓜会穿过它们,跳过已经运行过的任何文件夹。从上面的链接复制粘贴示例 -
cucumber features\folder2\another.feature features\folder1\some.feature features
我同意@alannichols有关彼此独立的测试。这是自动化套件的一个基本方面。否则,我们最终会得到一个不可维护的片状测试套件。
在运行另一个功能之前运行某个功能文件对我来说似乎是一个测试设计问题。
黄瓜提供了几个选项来解决这样的问题:
a)是否真的DeleteAccountingYear.feature其自身的特点?如果没有,你可以使用黄瓜Background:选项。后台中提供的步骤将针对该功能文件中的每个场景运行。所以,你的AddAccountingYear.feature看起来就像这样:
Feature: AddingAccountingYear
Background:
Given I have deleted accounting year
Scenario Outline: add new accounting year
Then I add new account year
b)若DeleteAccountingYear.feature的确是其自身的特点,需要在它自己的特点的文件,那么你可以使用安装和拆卸功能。在黄瓜中,这可以使用hooks来实现。您可以使用特定的标签@doAfterDeleteAccountYear来标记AddDeleteAccountingYear.feature。现在,从“挂钩”开始,您可以为此特定标签执行所需的设置。该前钩(红宝石)看起来像:
Before('@doAfterDeleteAccountYear') do
#Call the function to delete the account year
end
如果删除帐户一年写成一个功能,那么唯一需要的是前面的勾来调用这个方法。这样的代码也将是DRY兼容的。
如果这些选项对您不起作用,则另一种强制执行顺序的方法是使用批处理/ shell脚本。您可以按照您希望执行的顺序为每个功能添加单独的黄瓜命令,然后执行该脚本。它的缺点是将为每个功能文件生成不同的报告。但这是我不会因为上述原因而推荐的。
- 1. 在其他功能之后运行UDF?
- 2. 如何在开始执行其他功能之前完成功能执行
- 3. 如何在后台运行其他功能时在后台运行功能?
- 4. 如何在完成一项功能之前完成其他功能?
- 5. Flatiron Union“之后”功能在“之前”功能之前执行?
- 6. 在其他功能完成后运行功能
- 7. 在观看功能之前运行服务器功能
- 8. 使异步块在其他代码之前运行
- 9. setup.py:在其他任何东西之前运行build_ext
- 10. PhantomJS:在任何其他脚本运行之前注入脚本
- 11. 在任何其他测试之前运行的Symfony测试?
- 12. 运行jQuery的功能后,其他功能
- 13. 如何使用功能从其他files.coffee
- 14. 如何在其他函数之前启用Jquery表单验证功能?
- 15. 成功ajax:如果是200状态代码运行功能其他功能
- 16. 击:如何在其他功能
- 17. 如何在其他事件之后禁用Jquery功能?
- 18. Excell RefreshAll在其他宏之后运行
- 19. 在继续使用其他功能之前,程序停止了什么?
- 20. 使用其他功能
- 21. Javascript在onLoad之后运行,但在其他任何设置默认设置之前运行
- 22. 如何确保静态方法/属性在其他类中的所有其他静态属性之前运行
- 23. 添加“父”功能在所有组件之前运行
- 24. 其他功能运行时是否执行回调?
- 25. UIViewControllerAnimatedTransitioning只能在其他时间运行?
- 26. 如何在使用动画功能之前使用动画功能
- 27. 使用变量这在其他功能
- 28. 仅在其他功能完成后执行功能吗?
- 29. 如何使用dom4j在其他节点之前插入节点?
- 30. 如何设置其他功能全景
好的谢谢你。有用。 – gasmyr 2015-03-04 11:29:37
太好了! @gasmyr如果它解决了你的问题,你能否将这个答案标记为已接受?谢谢 – Eswar 2015-03-04 18:35:15