簡體   English   中英

軟斷言的工作原理

[英]How Soft Assertions Work

即使一個或多個斷言在 TestNG 中失敗,我也開始了解繼續測試。 為了在我的項目中實現軟斷言,我參考了以下鏈接。

http://beust.com/weblog/2012/07/29/reinventing-assertions/

http://seleniumexamples.com/blog/guide/using-soft-assertions-in-testng/

http://www.seleniumtests.com/2008/09/soft-assertion-is-check-which-doesnt.html

但我不理解代碼執行的流程,比如函數調用,FLOW。

請幫助我了解軟斷言的工作流程。

代碼:

import org.testng.asserts.Assertion;
    import org.testng.asserts.IAssert; 

    //Implementation Of Soft Assertion 
    public class SoftAssertions extends Assertion{   
    @Override public void executeAssert(IAssert a){ 
    try{ a.doAssert(); } 
    catch(AssertionError ex){ 
    System.out.println(a.getMessage()); } } } 

    //Calling Soft Assertion
 SoftAssertions sa = new SoftAssertions(); 
 sa.assertTrue(actualTitle.equals(expectedTitle),
"Login Success, But Uname and Pwd are wrong"); 

注意:即使上述斷言失敗,執行繼續

謝謝馬赫什

軟斷言的工作原理是將故障存儲在本地狀態中(可能在遇到它們時將它們記錄到stderr )。 測試完成后,它需要檢查任何存儲的故障,如果遇到任何故障,則在該點上使整個測試失敗。

我相信 TestNG 的維護者想到的是在測試結束時調用myAssertion.assertAll() ,它將運行Assert.fail()並使測試失敗,如果之前的任何軟斷言檢查失敗。

您可以通過添加一個@Before方法來初始化您的本地軟斷言對象,在您的測試中使用它並添加一個@After方法來在您的軟斷言對象上運行assertAll()方法來實現這一點。

請注意,這種@Before / @After方法使您的測試非線程安全,因此每個測試都必須在測試類的新實例中運行。 如果您的測試需要線程安全,則最好在測試方法本身內部創建軟斷言對象並在方法assertAll()運行assertAll()檢查。 TestNG 的一個很酷的特性是它能夠運行多線程測試,所以在你實現這些軟斷言時要注意這一點。

暫無
暫無

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

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