通常,当我们使用testng运行测试用例时,Assert错误会在该点之后停止进一步的执行。但是,有时如果我们能运行整个脚本会更好。手动阻止/禁用这些Assert将成为一个乏味的过程。因此,如果有一些方法可以通过编程来启用/禁用Assert,而不是手动启用/禁用Assert,那将非常有帮助。testng支持这个吗?如果没有,有人能帮我吗?
z9zf31ra1#
使用qaf验证可以满足您的需求,因为selenium提供了内置的验证方法,如果失败,那么testcase也会继续执行。
ippsafx72#
正如所建议的,可以使用softassert,即使Assert失败也不会停止执行。还可以通过将测试标记为enabled=false或enabled=true来启用/禁用Assert。这将依次运行所有测试(从而运行Assert),但标记为enabled=false的测试除外例子。示例中的Assert将不会执行,因为测试已禁用。
@Test (enabled=false) public void verifySearchReport { soft.assertEquals("About*", "About123Soft","FAILED ASSERT"); soft.assertAll(); }
示例中的Assert将在启用测试时执行。当使用softassert时,测试的进一步执行不会停止[即使Assert失败]。
@Test (enabled=true) public void verifySearchReport { soft.assertEquals("About*", "About123Soft","FAILED ASSERT"); soft.assertAll(); } //Further @Test here
taor4pac3#
正如朱利安上面提到的,你最好自己做一个定制软件。我不知道,我可能大错特错,但是testng附带的标准softassert没有给我想要的行为。我想测试失败的最常见原因是elementnotfound或timeoutexception。因此,在waitforelement方法中,您可以捕获这些异常(或任何异常),并在控制台上打印警告消息(或者不打印任何内容,甚至可以截图,例如警告错误,而不是show stopper错误)。如下所示:
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; }
希望有帮助!
3条答案
按热度按时间z9zf31ra1#
使用qaf验证可以满足您的需求,因为selenium提供了内置的验证方法,如果失败,那么testcase也会继续执行。
ippsafx72#
正如所建议的,可以使用softassert,即使Assert失败也不会停止执行。还可以通过将测试标记为enabled=false或enabled=true来启用/禁用Assert。这将依次运行所有测试(从而运行Assert),但标记为enabled=false的测试除外
例子。示例中的Assert将不会执行,因为测试已禁用。
示例中的Assert将在启用测试时执行。当使用softassert时,测试的进一步执行不会停止[即使Assert失败]。
taor4pac3#
正如朱利安上面提到的,你最好自己做一个定制软件。我不知道,我可能大错特错,但是testng附带的标准softassert没有给我想要的行为。
我想测试失败的最常见原因是elementnotfound或timeoutexception。因此,在waitforelement方法中,您可以捕获这些异常(或任何异常),并在控制台上打印警告消息(或者不打印任何内容,甚至可以截图,例如警告错误,而不是show stopper错误)。如下所示:
希望有帮助!