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