2016-12-27 31 views
0

我有一個測試方法裏面我想驗證一些事情,只有在我軟測試方法斷言後失敗的測試類。SoftAssert在硒測試類

但是,我覺得我的測試方法越來越混亂與故障處理。我還沒有找到任何有關這方面的最佳做法。有任何想法嗎?如果我將斷言移動到頁面對象類中,它也會有點混亂。

@Test 
public void test() { 

    // steps here 

    // then asserts here 
    SoftAssert soft = new SoftAssert(); 
    String expectedHeaderText = "foo"; 

    soft.assertTrue(pageObjectClass.isHeaderPresent(), "Unable to find the Header page object."); 


    soft.assertTrue(pageObjectClass.getHeader().contains(expectedHeaderText), 
      String.format("Expected to find '%s'. Page actually shows '%s'", expectedHeaderText, pageObjectClass.getHeader())); 

    // more asserts 

    sa.assertAll(); 

} 
+0

檢查標題的存在似乎相當多餘,然後檢查標題中的文本。如果你退出第一個斷言,並且只檢查標題文本,你仍然斷言同樣的事情:頭文件存在,文本是你所期望的。 保持斷言在測試類,從來沒有在頁面對象類,因爲這是沒有道理的。頁面對象類應該只有選擇器和getter/setter以及其他頁面相關的邏輯,不應該在那裏做斷言。 – jaredgilmore

回答

0

檢查以下約定

@Test 
public void test() { 
// steps here 

// then asserts here 
SoftAssert soft = new SoftAssert(); 
String expectedHeaderText = "foo"; 

Boolean checkHeader=pageObjectClass.isHeaderPresent() //Change the method on POM pageObjectClass such that it returns the true or false 
soft.assertTrue(checkHeader,true); 

String checkHeaderContent=pageObjectClass.getHeader()//change method on POM pageObjectClass to return a string 
soft.assertTrue(checkHeaderContent.contains(expectedHeaderText), String.format("Expected to find '%s'. Page actually shows '%s'", expectedHeaderText, checkHeaderContent)); 
// more asserts 
sa.assertAll(); 

}

+0

感謝您的快速回復,所以如果我在測試方法中有5個以上的內容,是否會顯得過於重複?即檢查標題,然後標題文本,然後移動到檢查另一個項目及其文本,重複幾次。我在想,如果在'isHeaderPresent'裏面我們返回一個真/假和一個錯誤信息? – user2195411

+0

我可以想出很多方法來實現你的場景。我建議你將「expectedHeaderText」傳遞給POM方法,該方法將根據調查結果檢查存在,標題內容並返回true/false! – prithvi394

+0

如果我檢查POM方法中的當前和內容並返回true/false,那麼由於方法返回true/false,我將失敗失敗消息。除非我保留測試方法中的所有失敗消息內容 – user2195411

0

您可以檢查QMetry Automation Framework其中規定assertion and verification方法。例如:

//verify element present 
firstName.verifyPresent(); 
firstName.assertPresent(); 

//verify Text of Element 
firstName.verifyText("First User"); 
firstName.assertText("First User"); 

//verify Text of element with StringMatchers conditions 
firstName.verifyText(StringMatcher.contains("First User")); 
firstName.assertText(StringMatcher.contains("First User"),"Username Validation"); 

如果斷言方法,您的測試不會繼續斷言失敗。

如果使用任何驗證方法,即使驗證失敗,您的測試也會繼續,如果一個或多個驗證失敗,則測試的最終狀態將失敗。