2015-03-02 54 views
0

我有两个黄瓜功能(DeleteAccountingYear.feature和AddAccountingYear.feature)。 我该怎么做才能使第二个功能(AddAccountingYear.feature)在第一个功能(AddAccountingYear.feature)之前运行。如何使功能在其他之前运行

回答

0

从官高的网站 - https://jkotests.wordpress.com/2013/08/22/specify-execution-order-of-cucumber-features/运行顺序按以下方式确定:

  1. 按字母顺序按特征文件目录的场景特征文件
  2. 按字母顺序由特征文件名
  3. 订单

因此,要在另一个功能之前运行一个功能,您可以更改功能文件的名称或将其放入单独的功能文件夹中首先按字母顺序排列的名称。

但是,让所有测试独立于另一个测试是一种很好的做法。最简单的方法之一是使用mock来创建数据(即要删除的日期),但这并不总是一种选择。另一种方法是在删除测试的设置中创建要删除的数据。这样做的不利之处在于它是重复工作,但是测试运行的顺序并不重要。现在这可能不是问题,但是使用更大的测试套件和/或使用测试repo的多个编码器可能难以仅基于字母排序来维持测试排序。

另一个选择是组合添加和删除测试。这违背了一个测试应该测试一件事的通用规则,但如果您的测试需要很长时间才能运行,并且将添加数据步骤添加到删除设置中,这通常会是一种实用的方法,这会为您的测试套件增加大量时间。

编辑:在阅读指向Justin Ko网站的链接后,您可以指定在运行黄瓜时运行的功能,并且它会按照您提供的顺序运行它们。对于任何你不关心订单的人,都可以把整个特性文件夹放在最后,黄瓜会穿过它们,跳过已经运行过的任何文件夹。从上面的链接复制粘贴示例 -

cucumber features\folder2\another.feature features\folder1\some.feature features 
0

我同意@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脚本。您可以按照您希望执行的顺序为每个功能添加单独的黄瓜命令,然后执行该脚本。它的缺点是将为每个功能文件生成不同的报告。但这是我不会因为上述原因而推荐的。

+0

好的谢谢你。有用。 – gasmyr 2015-03-04 11:29:37

+0

太好了! @gasmyr如果它解决了你的问题,你能否将这个答案标记为已接受?谢谢 – Eswar 2015-03-04 18:35:15

相关问题