【问题标题】:How to re-use steps in Feature file /Duplicate step definitions/如何重用功能文件中的步骤/重复步骤定义/
【发布时间】:2018-06-23 23:43:53
【问题描述】:

我在 Feature 文件中有一些场景具有可重复的步骤(“我在登录表单上”和“单击登录按钮”)。测试失败,错误为 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 

【问题讨论】:

  • 您是否为“我正在登录表单”创建了两个具有相同模式匹配的方法?可以添加相关的步骤定义吗?
  • 没错,Steps定义文件也包含重复的方法。我已经删除了 Steps 定义文件中的重复方法,现在可以正常工作了!谢谢

标签: java cucumber gherkin cucumber-java


【解决方案1】:

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

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

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

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

我尽量保持我的步数非常短,大​​多数情况下只有一两行。我通常只是直接委托给一个助手。这使我可以更改抽象级别,并从将参数转换为与被测系统交互的步骤。

【讨论】:

    【解决方案2】:

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

    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
    

    【讨论】:

    • 感谢背景的建议。我在后台分离了“鉴于我在登录表单”,它看起来更好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 2020-12-12
    • 2021-12-10
    • 1970-01-01
    • 2022-06-12
    • 2018-10-10
    相关资源
    最近更新 更多