断言失败后如何继续测试执行?

时间:2015-09-21 11:52:41

标签: selenium selenium-webdriver testng assertions

我知道这个问题是重复的。但我正在寻找昨天的结果。我没有得到任何解决方案.. 我正在使用Selenium Webdriver 2.47.1& TestNG用于自动化。在我的自动化脚本中,我有12套测试和我正在使用TestNG Assert方法来比较预期结果&实际结果。我的代码格式如下......

@Test(priority = 6)
public void TestingeNote1() {
   cd.switchTo().frame("RTop");
   cd.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
   String TesteNote1 = cd.findElement(By.xpath("//table/tbody/tr[2]/td[5]")).getText();
   StringBuffer object1 = new StringBuffer(TesteNote1);
   String ActeNote1 = object1.substring(108);
   String ExpeNote1 = ex.getExcelValue(scenarioName, 75, 4);
   try {
       Assert.assertEquals(ExpeNote1, ActeNote1);
       ex.setExcelValue(scenarioName, 75, 8, "PASSED");
   }
   catch(Exception e) {
         ex.setExcelValue(scenarioName, 75, 8, "FAILED");
   }
   cd.switchTo().defaultContent();
}

一旦断言失败,测试脚本的执行就会停止。我想在断言失败后继续执行。我也使用了Verify(),它只是传递了验证结果。但是上面的测试结果是失败的。

3 个答案:

答案 0 :(得分:1)

我建议使用try / finally块。

。 。

    try {
     //use IF condition to match Strings (ExpeNote1, ActeNote1)are equal 
     ex.setExcelValue(scenarioName, 75, 8, "PASSED");
     }
     catch(Exception e)
     {  ex.setExcelValue(scenarioName, 75, 8, "FAILED");}
     finally {  cd.switchTo().defaultContent();}

答案 1 :(得分:1)

将try catch块与适当的异常捕获器一起使用。例如,当您尝试捕获正常异常时,在catch块中使用exception,如果DOM中不存在该元素,则使用NoSuchElementException等...在您的情况下捕获您的异常进入你的错误控制台。这是如何 -

  try {
       Assert.assertEquals(ExpeNote1, ActeNote1);
       ex.setExcelValue(scenarioName, 75, 8, "PASSED");
   }
   catch(AssertionError e) {
       ex.setExcelValue(scenarioName, 75, 8, "FAILED");
   }

您的执行停止是因为您没有捕获断言语句抛出的正确异常。我猜你得到一个AssertionError,如果没有替换你从上面的代码中获得的异常类型。希望这会有所帮助。

答案 2 :(得分:1)

使用软断言。即使一个断言失败,它也将继续测试。

SoftAssert softAssert = new SoftAssert();
String ActualErrorMEssage = firstNameerrorXpath.getText;
String ActualErrorMEssage2 = secondNameNameerrorXpath.getText;
softAssert.assertEquals(ActualErrorMEssage,ExpectedErrorMEssage);
softAssert.assertEquals(ActualErrorMEssage2,ExpectedErrorMEssage);
softAssert.assertAll();