如何重复使用功能文件中的步骤/重复步骤定义/

How to re-use steps in Feature file /Duplicate step definitions/

我在功能文件中有几个具有可重复步骤的场景('I am on Login form' 和 'click on login button')。测试失败,错误 Duplicate step definitions in Steps.LoginSteps。 是否有可能以某种方式重用重复的步骤?

Feature: LoginFeature

Scenario: Login with valid username and password
    Given I am on Login form
    And I enter valid username and password
    And click on login button
    Then I should see the main page


  Scenario: Login with invalid username and password
    Given  I am on Login form
    And I enter invalid email username and password
    And click on login button
    When modal error is displayed
    Then click on Ok button
    And I should see the login form 

所有步骤都是全局的,Cucumber 将使用具有匹配正则表达式的方法。

这背后的逻辑是,如果您在两个或更多地方使用一种方式来描述您想要的行为,您怎么能期望这种行为在不同的场景中有所不同?

您提供了一个完美的登录步骤示例。您是否希望仅仅因为您计划验证正面和负面案例而出现在不同的登录页面上?答案显然是否定的,因此不需要多步实施。

接下来您可能会发现从另一个步骤调用一个步骤的冲动。不要那样做。创建一个在这种情况下两个步骤都会调用的辅助方法。

我尽量让我的步骤非常短,在大多数情况下只有一两行。我通常直接委托给助手。这允许我更改抽象级别,从转换参数到与被测系统交互的步骤。

您可以将背景用于同一功能中所有场景通用的步骤(目的是避免重复) 示例:

Feature: LoginFeature

Background:

Given I am on Login form

Scenario: Login with valid username and password

    And I enter valid username and password
    And click on login button
    Then I should see the main page


  Scenario: Login with invalid username and password

    And I enter invalid email username and password
    And click on login button
    When modal error is displayed
    Then click on Ok button
    And I should see the login form 

您也可以修改按钮点击的步骤以传递参数。这样一来,您只需单击一个按钮即可,您可以在不同的场景中使用传递不同的参数(登录、确定等)。

示例:

Click on "login" button