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