-------------------------用例执行未通过,进行截图--------------------------
(1)step1 :创建一个类AllureReportListener ----监听用例执行的运行状态
package com.lemon.listener;
import org.testng.IHookCallBack;
import org.testng.IHookable;
import org.testng.ITestResult;
import com.lemon.common.BaseCases;
/**
* implements实现 IHookable接口
* 重写IHookable接口提供的run方法public void run(IHookCallBack callBack, ITestResult testResult);
* 监听用例执行的的运行状态
* @author TF
*
*/
public class AllureReportListener implements IHookable {
@Override
public void run (IHookCallBack callBack ,ITestResult testResult){
//callBack调用runTestMethod方法,将测试结果放到了testResult里面
callBack.runTestMethod(testResult);
//testResult调用getThrowable()方法获取用例的异常执行结果
//异常结果为空,说明没有异常 ,不为空,说明有异常
if(testResult.getThrowable()!=null){
//有异常,就截图
//BaseCases.getScreenshot("G:\\截图\\loginFailure.png");//此方法只能生成一张截图,得到的是最后一次的截图(会覆盖之前的截图)
//System.getProperty("user.dir")---获取项目的根路径,user.dir是key,获取用户工作目录
//System.currentTimeMillis()--获取系统时间戳
BaseCases.getScreenshot(System.getProperty("user.dir")+"\\target\\screenShot\\"+System.currentTimeMillis()+".png");//在此路径下可以获得多张截图
}
}
}
(2) 配置监听器(只有配置监听器AllureReportListener
类才会生效)
下面代码放在testng.xml文件中,和<test></test>同级
<listeners>
<listener class-name="com.lemon.AllureReportListener"></listener>
</listeners>
(3)造一条异常数据---这里以Login_success()为例(将密码输入错误)--验证是否截图
(4)执行代码:testng.xml右键->run as ->testNG suite
(注意:不能运行Logincases类来获取截图,这样会监听不到)
下图因为跑了三次,所以有三张截图
网友评论