2016-11-18 160 views
2

在我的場景中,我需要驗證頁面中是否存在10個對象。如何使黃瓜場景失敗

如果任何對象不存在,那麼該步驟應該失敗,並且最終該方案也應該報告爲失敗,但腳本執行應該繼續驗證剩餘的對象是否存在。

我知道scenario.getStatus()如果場景失敗了,但我該如何設置場景的狀態失敗?重要的是腳本執行應該在之後繼續。

回答

0

在步驟失敗後繼續執行步驟並不是一個好主意,因爲步驟失敗可能會使世界處於不變的違規狀態。更好的策略是增加場景的粒度。不要用幾個「Then」語句編寫單個場景,而要使用示例列表分別測試每個後置條件。有時場景大綱和示例列表可以合併類似的故事。 https://cucumber.io/docs/reference#scenario-outline

有一些關於添加特徵來標記特定步驟以在故障後繼續的討論。 https://github.com/cucumber/cucumber/issues/79

還有一些其他的方法失敗後,在這裏繼續通過場景步驟:continue running cucumber steps after a failure

+0

這可能是正確的,但缺少整體方法。原因在於,如果我想驗證該部分中存在的所有對象,請在方案步驟之一中進行,則方案大綱不會有幫助。 – Uday

1

根據您正在使用JUnit或TestNG的,你可以使用軟斷言概念的測試框架。基本上它會收集所有的錯誤,並在出現錯誤時拋出斷言錯誤。

爲了使場景失敗,您只需要斷言失敗,無需設置場景的狀態。如果斷言失敗,黃瓜會照顧到這一點。

對於testng,您可以使用SoftAssert類 - http://testng.org/javadocs/org/testng/asserts/SoftAssert.html您將獲得大量教程。調用doAssert將觸發所有存儲的斷言的驗證。

針對JUnit,你可以使用ErrorCollector規則類 - http://junit.org/junit4/javadoc/4.12/org/junit/rules/ErrorCollector.htmlenter link description here黃瓜不支持@rule註釋,你需要從該類繼承並重寫驗證屬性的修改改變公衆場所的保護。創建新類的實例並添加斷言。調用verify方法將開始驗證。

0

QAF提供了斷言和驗證概念,其中斷言失敗情景退出狀態失敗,如果驗證情況繼續下一步,並且如果一個或多個驗證失敗,則步驟/情形的最終狀態失敗。

您還可以使用step listener來設置步驟狀態失敗,這會導致測試失敗。通過使用步驟偵聽器,您還可以通過將異常轉換爲驗證失敗繼續執行步驟失敗。

+0

有沒有一種方法可以獨自使用黃瓜而不是QAF? – Uday