2017-03-07 32 views
0

首先讓我說,我是新來的JavaScript和剛開始。這可能是一個廣泛的問題,但我真的很想得到答案,所以我可以理解整個概念/方法。我正在閱讀這本名爲「更敏捷測試」的書,並且有一段關於自動化測試和頁面對象模式的內容,以及如何以某種方式編寫自動化測試用例非常有用,以便在實際UI上發生變化時,我只需要更改該對象/函數以及使用該對象/函數的每個其他測試用例在該更改之後將繼續工作。黃瓜/自動化測試:如何使用javascript函數來處理整體概念?

下面是我在想什麼的例子,讓我們說,我有以下黃瓜方案

Given I'm on some page 
When I login 
Then I must see some other page 

所以這是上面的場景。

我是否應該實現我的登錄代碼,就像某種函數接收兩個用於登錄和密碼的參數並單擊UI上所需的字段/按鈕。如果我有這個功能,我會簡單地使用When('something'), function login() etc.

而且對於未來如果我需要在其他測試用例中使用登錄,我會在給定語句或when語句中使用該函數。

這是正確的方式嗎?

+0

更詳細地看到這個你有不同的角色要測試?也許你想要測試夾具如Before。 – lloyd

+0

@lloyd如果按角色表示權限,是的,我們也有這些權限,那些也需要進行測試。 – Newcomer

回答

1

您應該將您的登錄代碼實施爲助手功能,然後從登錄步驟調用該代碼。

當您開始開發您的系統登錄功能時,您需要一個When步驟來登錄,例如,

Given I am registered 
When I login 
Then I should be logged in 

你做之後,你可以重複使用步驟這個功能就像

Given I am logged in

至於實施,我會做到這一點的紅寶石,你必須適應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

+0

我認爲這正是我的意思,正在尋找。你能詳細說明使用背景嗎? – Newcomer

+0

完成,希望有所幫助 – diabolist

0

身份驗證通常是您所有測試的先決條件。 從Cucumber Wiki推薦作爲先決條件。

Given John has a Logged in 
Then Navigate the Home Page 

因此你可以使用掛接前的情況下,可能有標記,以便您可以過濾掉不爲前提,要求身份驗證,如失敗的認證測試/場景場景。

+0

但是,如果像以前一樣將它用作前提條件「關鍵字」,或者如果我將它用作函數'login()',我可以在'Given'或'When'內部調用並使用它,那麼它有什麼區別?我能像那樣使用它嗎? – Newcomer

+0

給定和何時保留用於斷言預期的結果,以便它們檢查用戶是否登錄,如用於用戶填充的JS對象。之前正在執行測試的先決條件。 – lloyd

+0

我想我明白我在找什麼和我的意思 - 這是已經提到的頁面對象模式,我可以在其他地方創建它之後,在步驟定義中使用它。 – Newcomer