我有兩個黃瓜功能(DeleteAccountingYear.feature和AddAccountingYear.feature)。 我該怎麼做才能使第二個功能(AddAccountingYear.feature)在第一個功能(AddAccountingYear.feature)之前運行。如何使功能在其他之前運行
回答
從官高的網站 - https://jkotests.wordpress.com/2013/08/22/specify-execution-order-of-cucumber-features/運行順序按以下方式確定:
- 按字母順序按特徵文件目錄的場景特徵文件 內
- 按字母順序由特徵文件名
- 訂單
因此,要在另一個功能之前運行一個功能,您可以更改功能文件的名稱或將其放入單獨的功能文件夾中首先按字母順序排列的名稱。
但是,讓所有測試獨立於另一個測試是一種很好的做法。最簡單的方法之一是使用mock來創建數據(即要刪除的日期),但這並不總是一種選擇。另一種方法是在刪除測試的設置中創建要刪除的數據。這樣做的不利之處在於它是重複工作,但是測試運行的順序並不重要。現在這可能不是問題,但是使用更大的測試套件和/或使用測試repo的多個編碼器可能難以僅基於字母排序來維持測試排序。
另一個選擇是組合添加和刪除測試。這違背了一個測試應該測試一件事的通用規則,但如果您的測試需要很長時間才能運行,並且將添加數據步驟添加到刪除設置中,這通常會是一種實用的方法,這會爲您的測試套件增加大量時間。
編輯:在閱讀指向Justin Ko網站的鏈接後,您可以指定在運行黃瓜時運行的功能,並且它會按照您提供的順序運行它們。對於任何你不關心訂單的人,都可以把整個特性文件夾放在最後,黃瓜會穿過它們,跳過已經運行過的任何文件夾。從上面的鏈接複製粘貼示例 -
cucumber features\folder2\another.feature features\folder1\some.feature features
我同意@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腳本。您可以按照您希望執行的順序爲每個功能添加單獨的黃瓜命令,然後執行該腳本。它的缺點是將爲每個功能文件生成不同的報告。但這是我不會因爲上述原因而推薦的。
- 1. 在其他功能之後運行UDF?
- 2. 如何在開始執行其他功能之前完成功能執行
- 3. 如何在後臺運行其他功能時在後臺運行功能?
- 4. 如何在完成一項功能之前完成其他功能?
- 5. Flatiron Union「之後」功能在「之前」功能之前執行?
- 6. 在其他功能完成後運行功能
- 7. 在觀看功能之前運行服務器功能
- 8. 使異步塊在其他代碼之前運行
- 9. setup.py:在其他任何東西之前運行build_ext
- 10. PhantomJS:在任何其他腳本運行之前注入腳本
- 11. 在任何其他測試之前運行的Symfony測試?
- 12. 運行jQuery的功能後,其他功能
- 13. 如何使用功能從其他files.coffee
- 14. 如何在其他函數之前啓用Jquery表單驗證功能?
- 15. 成功ajax:如果是200狀態代碼運行功能其他功能
- 16. 擊:如何在其他功能
- 17. 如何在其他事件之後禁用Jquery功能?
- 18. Excell RefreshAll在其他宏之後運行
- 19. 在繼續使用其他功能之前,程序停止了什麼?
- 20. 使用其他功能
- 21. Javascript在onLoad之後運行,但在其他任何設置默認設置之前運行
- 22. 如何確保靜態方法/屬性在其他類中的所有其他靜態屬性之前運行
- 23. 添加「父」功能在所有組件之前運行
- 24. 其他功能運行時是否執行回調?
- 25. UIViewControllerAnimatedTransitioning只能在其他時間運行?
- 26. 如何在使用動畫功能之前使用動畫功能
- 27. 使用變量這在其他功能
- 28. 僅在其他功能完成後執行功能嗎?
- 29. 如何使用dom4j在其他節點之前插入節點?
- 30. 如何設置其他功能全景
好的謝謝你。有用。 – gasmyr 2015-03-04 11:29:37
太好了! @gasmyr如果它解決了你的問題,你能否將這個答案標記爲已接受?謝謝 – Eswar 2015-03-04 18:35:15