java - 如何概括 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 行开头,因此使场景看起来更大并且具有这些重复的步骤。
任何建议将不胜感激。
解决方案
写出更好的场景和步骤。你的都是关于你如何登录的,所以重复是痛苦的。而是编写仅与您正在做什么有关的步骤;这些更容易重用。
所以 ...
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
您可以以任何复杂程度应用此方法。请注意,在最后一个场景中,我们如何使用我们相对复杂的注册行为,而场景或功能甚至都没有意识到(注册是登录的一部分)。
推荐阅读
- android - Galaxy S7 和 Galaxy S10e 的 TextView 文本大小差异
- swift - 无法在获取通知 userInfo 中转换类型的值
- php - 为什么我在 Laravel 迁移中遇到引用错误?
- python - 从python中的数据框形成所有可能的路径(列表/字典)
- gcc - CentOS8+gcc 8.3.1 的“编译器缺少 asm-goto 支持”问题
- html - 如何在 github 中发布包含多个 html 文件的作品集?
- python - 如何创建包含信息的嵌套字典。来自 csv 文件
- reactjs - 在 TypeScript 中使用上下文 API
- javascript - 重叠滚动事件和滚轮事件时出现难以理解的行为
- python-3.x - 如何将随时间变化的单元格数据写入`vtk.vtkXMLUnstructuredGridWriter`?