![](/img/trans.png)
[英]How to run a single .feature file in a Playwright + Cucumber automation testing framework?
[英]Cucumber/Automation testing: How to approach the overall concept using javascript functions?
首先,让我说我是javascript新手,刚刚起步。 这可能是一个广泛的问题,但是我真的很想得到一个答案,这样我才能理解整个概念/方法。 我正在阅读一本名为《更多敏捷测试》的书,其中有一段关于自动化测试和页面对象模式,以及以某种方式编写自动化测试用例的非常有用的方法,因此,如果实际UI发生了变化,我只需要更改该对象/功能以及使用该对象/功能的所有其他测试用例在更改后将继续起作用。
这是我在想的一个例子,假设我有以下黄瓜情况
Given I'm on some page
When I login
Then I must see some other page
这就是上面的情况。
我是否应该像执行某种功能那样实现登录代码,该功能接收两个用于登录和密码的参数,然后单击UI上所需的字段/按钮。 如果我具有该功能,则只需使用When('something'), function login() etc.
对于将来,如果我需要在其他测试用例中使用登录名,则可以在给定或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。
例如
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 )的这套功能中更详细地了解这一点。
身份验证通常是所有测试的前提条件。 建议从黄瓜Wiki作为先决条件。
Given John has a Logged in
Then Navigate the Home Page
这样,您可以对方案使用“预钩”,可能需要使用标记,以便可以过滤掉不要求身份验证作为前提条件的方案,例如失败的身份验证测试/方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.