2016-04-29 77 views
0

在場景大綱中,如果有2個或更多場景,則所有功能步驟都將針對其他2個場景中的兩個場景執行。如何繞過黃瓜功能文件中的重複步驟執行?

但我只需要執行一個步驟之一即登錄步驟。

例如:

Scenario Outline: Acceptance page has <Application> logo appearing on top 
    Given I am signing up in <Application>   #I want to run this step only once 
    And I navigate to "Dashboard" page  # I want to run this step only once 
    Then I should see "header logo" exist 
    And I should see "footer" exist 
    And I should expect the following elements to be visible 
     | element     | 
     | Legal      | 
     | Privacy     | 
     | Security     | 
     | Cookies     | 

    Examples: 
     | Application | 
     | Gmail  | 

在上述特徵文件,我想登錄應用僅一次,並驗證的步驟其餘部分。

當前對於每個驗證步驟,登錄事情都會一次又一次地發生。

請建議我如何運行登錄步驟一次,並可以檢查頁面上的多個項目。

+0

難道你不需要運行'鑑於我在每個例子中註冊'?這與您的評論所說的只運行一次不兼容。 –

+0

另外,你正在使用哪個Cucumber實現?它不能同時是cucumber-jvm和cucumberjs。 –

+0

我想(或希望)你混淆註冊登錄。 – kiedysktos

回答

0

提取常用步驟並將它們放入Background語句中。背景是在每個場景之前運行的,但是在您之前的任何鉤子之前。

0

首先,@ mikejramsey56對於將場景中的常見步驟移動到背景是正確的。其次,你可以像Mike建議的那樣在登錄前登錄一個網站,但是如果瀏覽器因任何原因將你登出去,你將不會處於一個好的位置。測試應該是獨立的。

第三,Cucumber是顯示覆雜程度的好地方,您需要展示預期的內容。您可以將步驟合併爲一個步驟。如果你這樣做,你應該把代碼放到一個單獨的方法中,然後調用該方法。您可以通過一個步驟調用多種方法,例如驗證常見頁面組件。

第四,我希望​​你正在練習,因爲確保標頭&腳不存在使用行爲。用戶想要做的東西和看到的東西,可能是頂部的div或框架,但他們永遠不想看到一個div或框架。