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

时间:2017-03-07 15:04:50

标签: javascript testing automated-tests cucumber

首先让我说我是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语句中使用该函数。

这是正确的方法吗?

2 个答案:

答案 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作为方案,可能使用标记,以便您可以过滤掉不需要身份验证的方案作为前提条件,例如失败的身份验证测试/方案。