java—以编程方式启用或禁用testng中的Assert

xwmevbvl  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(362)

通常,当我们使用testng运行测试用例时,Assert错误会在该点之后停止进一步的执行。但是,有时如果我们能运行整个脚本会更好。手动阻止/禁用这些Assert将成为一个乏味的过程。因此,如果有一些方法可以通过编程来启用/禁用Assert,而不是手动启用/禁用Assert,那将非常有帮助。
testng支持这个吗?如果没有,有人能帮我吗?

z9zf31ra

z9zf31ra1#

使用qaf验证可以满足您的需求,因为selenium提供了内置的验证方法,如果失败,那么testcase也会继续执行。

ippsafx7

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
taor4pac

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;   
}

希望有帮助!

相关问题