【问题标题】:How to bypass repetitive step execution in cucumber feature files?如何绕过黄瓜特征文件中的重复步骤执行?
【发布时间】:2016-04-29 17:36:51
【问题描述】:

在场景大纲中,如果有 2 个或更多场景,则功能的所有步骤都将针对另外 2 个场景执行。

但我只需要执行一次其中一个步骤,即登录步骤。

例如:

Scenario Outline: Acceptance page has <Application> logo appearing on top
    Given I am signing up in <Application>         #I want to run this step only once
    And I navigate to "Dashboard" page     # I want to run this step only once
    Then I should see "header logo" exist
    And I should see "footer" exist
    And I should expect the following elements to be visible
        | element                    |
        | Legal                      |
        | Privacy                    |
        | Security                   |
        | Cookies                    |

    Examples:
        | Application | 
        | Gmail       | 

在上述功能文件中,我只想登录一次应用程序并验证其余步骤。

目前对于每个验证步骤,登录的事情都会一次又一次地发生。

请建议我如何只运行一次登录步骤并且可以检查页面上的多个项目。

【问题讨论】:

  • 您不需要为每个示例运行Given I am signing up in &lt;Application&gt; 吗?正如您的评论所说,这与只运行一次不兼容。
  • 另外,您使用的是哪个 Cucumber 实现?不能同时是 cucumber-jvm 和 cucumberjs。
  • 我猜(或希望)您将注册与登录混淆了。

标签: cucumber cucumber-jvm cucumberjs feature-file


【解决方案1】:

首先,@mikejramsey56 将常用步骤从场景转移到背景是正确的。

其次,您可以按照 Mike 的建议在 before 挂钩中登录一次网站,但如果浏览器出于任何原因将您注销,您将不会处于一个好位置。测试应该是独立的。

第三,Cucumber 是展示预期内容所需的复杂程度的好地方。您可以将步骤合并为一个步骤。如果你这样做了,你应该把代码从步骤中拉出来,放到一个单独的方法中,然后从步骤中调用方法。您可以有一个调用多个方法的步骤,例如验证常见的页面组件。

第四,我希望​​你在练习,因为确保头球和脚存在不是使用行为。用户想做一些事情并看到一些东西,它们可能在顶部的 div 或 frame 中,但他们永远不想看到 div 或 frame。

【讨论】:

    【解决方案2】:

    提取常用步骤并将它们放入Background 语句中。后台在您的每个场景之前运行,但在您的任何前挂钩之后运行。

    【讨论】:

      猜你喜欢
      • 2016-06-04
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      • 2018-12-19
      • 2020-06-15
      相关资源
      最近更新 更多