首页 > 解决方案 > 如何概括 Selenium Cucumber 中的登录步骤并避免功能文件中的重复步骤?

问题描述

我将 Selenium+Cucumber 用于我的自动化项目并使用 Java 编写。我编写了一个功能文件,其中在每个场景中重复了 4-5 个登录步骤。以下是在每个场景中重复的登录行。

Scenario: Display the relevant items assigned when logged in as an testUser
    Given I am on the login page
    And I fill email with valid testUser email address
    And I fill password with valid testUser password
    And I press Log in
    When I click on the selector
    Then I should see all the items assigned to my testUser account

这里的键“testUser”是参数化的。有时会与另一个用户(例如“stageUser”)重复相同的步骤。对于此类步骤,Cucumber 是否提供了一种以某种方式概括这些步骤的方法?因为每个场景都以这 6 行开头,因此使场景看起来更大并且具有这些重复的步骤。

任何建议将不胜感激。

标签: javaseleniumcucumberbddcucumber-jvm

解决方案


写出更好的场景和步骤。你的都是关于你如何登录的,所以重复是痛苦的。而是编写仅与您正在做什么有关的步骤;这些更容易重用。

所以 ...

Scenario: Login
  Given I am registered
  When I login
  Then I should be logged in

然后稍后

Feature: Something that requires me to be logged in

Background
  Given I am logged in

Scenario: Do something
  When I do something
  Then something should be done

看看我如何将一大堆背景简化为更简单和抽象的东西。

我将在这里给出一些关于实施的提示

Given I am logged in
  @i = create_registered_user
  login(user: @i
end

When I login
  login(user: @i)
end

Given I am registered
  @i = create_registered_user
end

您可以以任何复杂程度应用此方法。请注意,在最后一个场景中,我们如何使用我们相对复杂的注册行为,而场景或功能甚至都没有意识到(注册是登录的一部分)。


推荐阅读