首先让我说我是javascript的新手,刚开始。这可能是一个广泛的问题,但我真的想得到一个答案,这样我就能理解整个概念/方法。我正在阅读这本名为“更敏捷测试”的书,还有一个关于自动化测试和页面对象模式的段落,以及如何以某种方式编写自动化测试用例非常有用,因此如果实际用户界面发生变化,我只需要更改该对象/函数以及使用该对象/函数的所有其他测试用例将在更改后继续工作。
以下是我正在思考的一个例子,假设我有以下黄瓜情景
Given I'm on some page
When I login
Then I must see some other page
这就是上面的情景。
我应该实现我的登录代码,就像接收登录和密码的两个参数的某种功能一样,并点击UI上的所需字段/按钮。如果我有这个功能,我只需使用When('something'), function login() etc.
对于将来如果我需要在其他测试用例中使用login,我会在给定或when语句中使用该函数。
这是正确的方法吗?
答案 0 :(得分:1)
您应该将登录代码实现为帮助程序函数,然后从登录步骤调用它。
当您开始开发系统登录功能时,您需要一个When步骤来登录,例如
Given I am registered
When I login
Then I should be logged in
完成后,您可以按照
等步骤重复使用此功能 Given I am logged in
至于实现,我将在ruby中执行,你必须适应js。
# features/step_definitions/login_steps.rb
module LoginStepHelper
def login_as(user:)
# assumes user is an object that knows its email, password etc.
...
end
end
World LoginStepHelper
When I login
login_as user: @i # assumes you have setup who you are earlier
end
Given I am logged in
login_as user: @i
end
请注意,只要他们使用相同的帮助方法来完成实际工作,就可以有很多不同的步骤定义来登录。
我强烈建议您不要在挂钩或标签之前使用来控制登录。如果您要编写许多需要登录才能执行某些操作的方案,请使用Background。
e.g。
Feature: Registering gives benefits
Background:
Given I am registered
And I am logged in
Scenario: Have a history
When I view my history
Then
...
而不是
Feature: Registering gives benefits
@logged_in
Scenario: Have a history
When I view my history
...
@hooks旨在控制运行方式的技术方面,例如: @ wip,@ javascript不要将它们用于业务功能。
最后,您可以在示例项目(https://github.com/diabolo/cuke_up/tree/master/features)
的这组功能中更详细地看到这一点答案 1 :(得分:0)
身份验证通常是所有测试的先决条件。 从Cucumber Wiki开始,建议将其作为前提条件。
Given John has a Logged in
Then Navigate the Home Page
因此,您可以使用Before Hook作为方案,可能使用标记,以便您可以过滤掉不需要身份验证的方案作为前提条件,例如失败的身份验证测试/方案。