以编程方式启用或禁用TestNG中的断言

时间:2017-01-04 07:23:26

标签: java testing selenium-webdriver testng

通常当我们使用TestNG运行测试用例时,断言错误会在该点之后停止进一步执行。但是,有时如果我们可以运行整个脚本会更好。手动阻止/禁用这些断言变得繁琐。因此,如果有一些方法可以以编程方式启用/禁用除手动之外的断言,那么它确实会有很大的帮助。

TestNG是否支持此功能?如果没有,有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

正如朱利安上面提到的,你最好自己制作一个自定义的softAssert。我不知道,我可能会非常错误,但testNG附带的标准softAssert并没有给我我追求的行为。

我认为测试失败的最常见原因是ElementNotFound或TimeOutException。因此,在waitForElement方法中,您可以捕获这些异常(或任何异常)并在控制台上打印警告消息(或者不打印任何内容,甚至可以截取屏幕截图,如警告错误但不显示 - 停止错误)。如下所示:

 public boolean waitForElement(String elementName, int timeOut) {

   try{
elementPresent=wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(findXpath(elementName)))).isDisplayed());

  }                             
  catch(org.openqa.selenium.TimeOutException e1){e1.printStackTrace();elementPresent=false;takeScreenshot();}       
  }     

  return elementPresent;   
} 

希望有所帮助!

答案 1 :(得分:0)

使用QAF Validation可以满足您的要求,对于selenium,它提供了内置的验证方法,如果失败则testcase也会继续执行。

答案 2 :(得分:0)

根据建议,即使断言失败,也可以使用不会停止执行的SoftAssert。 通过将测试标记为enabled = false或enabled = true,也可以启用/禁用断言。反过来,这将运行所有测试(并因此进行断言),除非这些测试被标记为enabled = false

示例。由于禁用了测试,因此示例中的断言将不会执行。

       @Test (enabled=false)                           
       public void verifySearchReport {
       soft.assertEquals("About*", "About123Soft","FAILED ASSERT");
       soft.assertAll();
        }

示例中的断言将在启用测试后执行。使用SoftAssert时,即使断言失败,测试的进一步执行也不会停止。

       @Test (enabled=true)                           
       public void verifySearchReport {
       soft.assertEquals("About*", "About123Soft","FAILED ASSERT");
       soft.assertAll();
        }
        //Further @Test here