簡體   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