0

在场景大纲中,如果有 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       | 

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

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

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

4

2 回答 2

0

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

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

第三,Cucumber 是展示您需要展示预期内容的复杂程度的好地方。您可以将步骤合并为一个步骤。如果您这样做,您应该将代码从步骤中提取出来并将其放入单独的方法中,然后从步骤中调用该方法。您可以有一个调用多种方法的步骤,例如验证公共页面组件。

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

于 2016-04-29T20:25:37.607 回答
0

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

于 2016-04-29T18:01:41.513 回答