繁体   English   中英

黄瓜/自动化测试:如何使用javascript函数处理整体概念?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM