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

标签 java cucumber gherkin cucumber-java

我的功能文件中有一些具有可重复步骤的场景(“我在登录表单上”和“单击登录按钮”)。测试失败,出现错误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 将使用带有匹配正则表达式的方法。

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

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

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

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

关于java - 如何重复使用功能文件中的步骤/重复步骤定义/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46400266/

相关文章:

java - 无法使用 Class.forName() 查找包中的类

javascript - 测试javascript点击功能capybara附加文件图片上传

javascript - 从外部文件加载 cucumber /小 cucumber 中的数据

java - 二维递归总是返回 0

java - JPype1=0.7.0 : TypeError: Unable to convert str ro java type class java. lang.String

java - TinyMCE 的图像上传处理程序 Servlet/JSP

c# - 如何使步骤参数依赖于配置?

java - 将 Java 与模块一起使用

gradle - Gradle 项目的 Runner 类中无法解析导入 cucumber

selenium - 如何使用该场景作为另一个场景的先决条件