检测测试@AfterMethod中的测试失败
如果测试失败,我想截取屏幕截图。与其用 try/catch 块包装所有测试方法,我想将此逻辑添加到用 .@AfterMethod
如何在注释的方法中检测当前测试是否失败?@AfterMethod
如果测试失败,我想截取屏幕截图。与其用 try/catch 块包装所有测试方法,我想将此逻辑添加到用 .@AfterMethod
如何在注释的方法中检测当前测试是否失败?@AfterMethod
如果注释的方法具有参数,则TestNG将自动注入测试结果。(来源:TestNG 文档,第 5.18.1 节@AfterMethod
ITestResult
)
这应该可以完成以下工作:
@AfterMethod
public void tearDown(ITestResult result) {
if (result.getStatus() == ITestResult.FAILURE) {
//your screenshooting code goes here
}
}
一个不错的选择是使用 而不是处理 中的故障报告。测试侦听器的函数将在测试方法运行后但在方法运行之前调用。(请注意,侦听器中没有函数;该角色由 履行。)ITestListener
@AfterMethod
onTestFailed()
@AfterMethod
onTestFinished()
@AfterMethod
为了让自己更轻松,您可以使用 ,它将实现您自己没有的所有其他功能。TestListenerAdapter
@Override
你最终得到的是:
public class MyTestListener extends TestListenerAdapter {
@Override
public void onTestFailure(ITestResult result){
yourTakeScreenShotFunctionHere();
}
}
然后,将侦听器附加到测试类
@Listeners({MyTestListener.class})
public class MyTestClass(){etc}
它是对测试类对象的引用,因此您可以使用反射从中获取数据,例如 Selenium WebDriver 实例等。ITestResult
您可以根据需要拥有任意数量的不同侦听器,以执行各种操作,例如清理或保留错误日志,截取屏幕截图,触发其他报告功能,发送电子邮件或所需的任何内容。