[英]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.