簡體   English   中英

Selenium 中的“斷言”與“驗證”

[英]'assert' vs. 'verify' in Selenium

Selenium 執行的檢查通常有兩種形式:assertFoo 和 verifyFoo。 我知道 assertFoo 使整個測試用例失敗,而 verifyFoo 只是指出該檢查的失敗並讓測試用例繼續進行。

因此,使用 verifyFoo 我可以獲得多個條件的測試結果,即使其中之一失敗。 另一方面,對我來說,一次失敗的檢查就足以知道,我的編輯破壞了代碼,無論如何我都必須糾正它們。

在哪種具體情況下,您更喜歡這兩種檢查方式中的一種? 你的哪些經歷激發了你的觀點?

我將使用assert()作為測試的入口點(“網關”)。 只有當斷言通過時, verify()檢查才會被執行。 例如,如果我正在檢查由一系列操作產生的窗口內容,我會assert()窗口的存在,然后verify()內容。

我經常使用的一個例子 - 檢查 jqgrid 中的估計值: assert()網格的存在,和verify()估計值。

我遇到了一些通過使用克服的問題

assert*()

代替

verify*()

例如,在表單驗證中,如果你想檢查一個表單元素,使用

verifyTrue(...);
即使字符串不存在於表單中,也只會通過測試。

如果你用驗證替換斷言,那么它會按預期工作。

我強烈建議使用assert*()

如果您在生產系統上運行 Selenium 測試並希望確保您以測試用戶身份登錄,而不是您的個人帳戶,那么在觸發任何如果意外使用會產生意想不到的效果的動作。

通常你應該堅持每個測試用例一個斷言,在這種情況下,差異歸結為任何必須運行的拆卸代碼。 但是無論如何你應該把它放在@After方法中。

我在 SeleneseTestBase 中的verify*()方法有很多問題(例如,它們使用System.out.println() ,而com.thoughtworks.selenium.SeleneseTestBase.assertEquals(Object, Object)只是不做你期望)所以我已經停止使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM