2015-03-02 53 views
0

我有兩個黃瓜功能(DeleteAccountingYear.feature和AddAccountingYear.feature)。 我該怎麼做才能使第二個功能(AddAccountingYear.feature)在第一個功能(AddAccountingYear.feature)之前運行。如何使功能在其他之前運行

回答

0

從官高的網站 - https://jkotests.wordpress.com/2013/08/22/specify-execution-order-of-cucumber-features/運行順序按以下方式確定:

  1. 按字母順序按特徵文件目錄的場景特徵文件
  2. 按字母順序由特徵文件名
  3. 訂單

因此,要在另一個功能之前運行一個功能,您可以更改功能文件的名稱或將其放入單獨的功能文件夾中首先按字母順序排列的名稱。

但是,讓所有測試獨立於另一個測試是一種很好的做法。最簡單的方法之一是使用mock來創建數據(即要刪除的日期),但這並不總是一種選擇。另一種方法是在刪除測試的設置中創建要刪除的數據。這樣做的不利之處在於它是重複工作,但是測試運行的順序並不重要。現在這可能不是問題,但是使用更大的測試套件和/或使用測試repo的多個編碼器可能難以僅基於字母排序來維持測試排序。

另一個選擇是組合添加和刪除測試。這違背了一個測試應該測試一件事的通用規則,但如果您的測試需要很長時間才能運行,並且將添加數據步驟添加到刪除設置中,這通常會是一種實用的方法,這會爲您的測試套件增加大量時間。

編輯:在閱讀指向Justin Ko網站的鏈接後,您可以指定在運行黃瓜時運行的功能,並且它會按照您提供的順序運行它們。對於任何你不關心訂單的人,都可以把整個特性文件夾放在最後,黃瓜會穿過它們,跳過已經運行過的任何文件夾。從上面的鏈接複製粘貼示例 -

cucumber features\folder2\another.feature features\folder1\some.feature features 
0

我同意@alannichols有關彼此獨立的測試。這是自動化套件的一個基本方面。否則,我們最終會得到一個不可維護的片狀測試套件。

在運行另一個功能之前運行某個功能文件對我來說似乎是一個測試設計問題。

黃瓜提供了幾個選項來解決這樣的問題:

a)是否真的DeleteAccountingYear.feature其自身的特點?如果沒有,你可以使用黃瓜Background:選項。後臺中提供的步驟將針對該功能文件中的每個場景運行。所以,你的AddAccountingYear.feature看起來就像這樣:

Feature: AddingAccountingYear 

    Background: 
    Given I have deleted accounting year 

    Scenario Outline: add new accounting year 
    Then I add new account year 

b)若DeleteAccountingYear.feature的確是其自身的特點,需要在它自己的特點的文件,那麼你可以使用安裝和拆卸功能。在黃瓜中,這可以使用hooks來實現。您可以使用特定的標籤@doAfterDeleteAccountYear來標記AddDeleteAccountingYear.feature。現在,從「掛鉤」開始,您可以爲此特定標籤執行所需的設置。該前鉤(紅寶石)看起來像:

Before('@doAfterDeleteAccountYear') do 
    #Call the function to delete the account year 
end 

如果刪除帳戶一年寫成一個功能,那麼唯一需要的是前面的勾來調用這個方法。這樣的代碼也將是DRY兼容的。

如果這些選項對您不起作用,則另一種強制執行順序的方法是使用批處理/ shell腳本。您可以按照您希望執行的順序爲每個功能添加單獨的黃瓜命令,然後執行該腳本。它的缺點是將爲每個功能文件生成不同的報告。但這是我不會因爲上述原因而推薦的。

+0

好的謝謝你。有用。 – gasmyr 2015-03-04 11:29:37

+0

太好了! @gasmyr如果它解決了你的問題,你能否將這個答案標記爲已接受?謝謝 – Eswar 2015-03-04 18:35:15

相關問題