2016-04-29 74 views
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  | 

在上述特征文件,我想登录应用仅一次,并验证的步骤其余部分。

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

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

+0

难道你不需要运行'鉴于我在每个例子中注册'?这与您的评论所说的只运行一次不兼容。 –

+0

另外,你正在使用哪个Cucumber实现?它不能同时是cucumber-jvm和cucumberjs。 –

+0

我想(或希望)你混淆注册登录。 – kiedysktos

回答

0

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

0

首先,@ mikejramsey56对于将场景中的常见步骤移动到背景是正确的。其次,你可以像Mike建议的那样在登录前登录一个网站,但是如果浏览器因任何原因将你登出去,你将不会处于一个好的位置。测试应该是独立的。

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

第四,我希望​​你正在练习,因为确保标头&脚不存在使用行为。用户想要做的东西和看到的东西,可能是顶部的div或框架,但他们永远不想看到一个div或框架。