在使用 TestNG 的测试方法上断言失败后,如何继续测试?
How do you continue the test after an assertion fails on a test method using TestNG?
我正在尝试找出一种方法来关闭弹出窗口 window,即使断言失败,这样我的下一个测试可以从 "main page" 继续,或者换句话说,我在哪里离开了。
工作流程如下:
主页 --> 弹出窗口 window(带有下面的断言和 driver.close)--> 主页
目前,如果断言失败,弹出窗口 window 保持打开状态,下一个测试无法找到它需要与之交互的元素,因为该元素位于 "main page" 上。我愿意接受建议。我的 objective 是为了提供准确的测试结果,因此避免误报是我使用断言的总体原因。
如果断言失败,您如何在测试方法结束时放置断言,但仍然完成其余步骤。
我的示例代码:
try{
WebDriverWait wait = new WebDriverWait(driver,5);
WebElement Reportrunningalready = wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("btn")));
System.out.println("Button found. Clicking it now.");
driver.findElement(By.name("btn")).click(); }
catch(Throwable e){
System.err.println("Button not found within the time.");
Assert.assertTrue(driver.getPageSource().contains("Your Report is complete."));
driver.close();
// change focus back to old tab
driver.switchTo().window(oldTab);
Thread.sleep(3000);
}
旁注:我知道 getPageSource
不是最好的方法,但弹出窗口正文中确实有 5-10 个单词,所以它并不详尽。
我使用 TestNG
作为我的框架,Java
作为我的语言,Webdriver2
作为我的 Selenium 测试工具。
谢谢!
您可以使用 softAssertion,请参阅此post了解更多信息
http://seleniumexamples.com/blog/guide/using-soft-assertions-in-testng/
要继续测试,您应该恢复 mechanism/initialize 个步骤(例如:返回登录页面)
None 提出的是一个干净的解决方案:
finally
是关于使用语言构造而不是正确的单元测试机制
- 软断言实际上是关于收集多个错误并提供有意义的最终消息,这也不是你的情况
正确的解决方案是清理单元测试框架生命周期方法中的资源(在 TestNG @AfterMethod
或类似的注释中)
我正在尝试找出一种方法来关闭弹出窗口 window,即使断言失败,这样我的下一个测试可以从 "main page" 继续,或者换句话说,我在哪里离开了。
工作流程如下: 主页 --> 弹出窗口 window(带有下面的断言和 driver.close)--> 主页
目前,如果断言失败,弹出窗口 window 保持打开状态,下一个测试无法找到它需要与之交互的元素,因为该元素位于 "main page" 上。我愿意接受建议。我的 objective 是为了提供准确的测试结果,因此避免误报是我使用断言的总体原因。
如果断言失败,您如何在测试方法结束时放置断言,但仍然完成其余步骤。
我的示例代码:
try{
WebDriverWait wait = new WebDriverWait(driver,5);
WebElement Reportrunningalready = wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("btn")));
System.out.println("Button found. Clicking it now.");
driver.findElement(By.name("btn")).click(); }
catch(Throwable e){
System.err.println("Button not found within the time.");
Assert.assertTrue(driver.getPageSource().contains("Your Report is complete."));
driver.close();
// change focus back to old tab
driver.switchTo().window(oldTab);
Thread.sleep(3000);
}
旁注:我知道 getPageSource
不是最好的方法,但弹出窗口正文中确实有 5-10 个单词,所以它并不详尽。
我使用 TestNG
作为我的框架,Java
作为我的语言,Webdriver2
作为我的 Selenium 测试工具。
谢谢!
您可以使用 softAssertion,请参阅此post了解更多信息
http://seleniumexamples.com/blog/guide/using-soft-assertions-in-testng/
要继续测试,您应该恢复 mechanism/initialize 个步骤(例如:返回登录页面)
None 提出的是一个干净的解决方案:
finally
是关于使用语言构造而不是正确的单元测试机制- 软断言实际上是关于收集多个错误并提供有意义的最终消息,这也不是你的情况
正确的解决方案是清理单元测试框架生命周期方法中的资源(在 TestNG @AfterMethod
或类似的注释中)