我是一个软件自动化工程师,我正在开发这个产品。有几天,我遇到了一个关于软断言和硬断言的问题。
1)在我的场景中,我需要关闭标签,在关闭标签之前,如果tase失败,我需要拍摄失败屏幕的快照,当我使用硬断言时,系统拍摄快照,但关闭标签并拍摄其他屏幕的快照,因此这不是一个好的技术,当我使用软断言时,系统不拍摄快照。any可以帮助我找到最好的解决方案
if (IspersistTotalTickets == false) {
CloseTab();
Assert.assertTrue(IspersistTotalTickets == false);
logger.log(LogStatus.PASS,"Test case Pass:Tickets are Not showing On the Registeration Site");
} else {
SoftAssert softAssert = new SoftAssert();
softAssert.assertTrue(IspersistTotalTickets == false);
softAssert.assertAll();
//ITestResult result1=FAILURE;
//this.testIT(result1);
CloseTab();
logger.log(LogStatus.FAIL, "Test case Failed:Total Tickets are Found On the Registeration Site");
}
@AfterMethod
public void testIT(ITestResult result) throws Exception {
if (ITestResult.FAILURE == result.getStatus()) {
String screenShotPath = utility.captureScreenshot(driver, result.getName());
// System.out.println("screenshot path:"+screenShotPath);
String image = logger.addScreenCapture(screenShotPath);
logger.log(LogStatus.FAIL, result.getName(), image);
}
report.endTest(logger);
report.flush();
// driver.quit();
}在关闭选项卡之前,我需要正确的快照
发布于 2019-08-21 05:04:05
根据您的代码,最简单的做法是始终在硬断言之前截取屏幕截图(如果您不想在没有失败时保留该截图,则在断言通过后删除该截图),或者在软断言中的assertAll()之前截取屏幕截图。
然而,我建议重新组织测试,将看起来像cleanup (closeTab())的东西移到@AfterTest,并创建一个规则(@ rule ),它将通过覆盖TestWatcher.failed()来在测试失败时截取屏幕截图。
https://stackoverflow.com/questions/57575510
复制相似问题