目前写的代码还是比较粗糙,有部分参考别人写法,自己总结一下,如果有哪些写的不好欢迎指教
设置监听失败重跑+截图,运行test.xml后,会生成一份测试报告,报告是html形式,这些监听的会在
报告中体现,到时候直接查看报告就能很清楚了,最后附上报告截图
配置test.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Default Suite" thread-count="3">
<listeners>
<listener class-name="com.xx.yy.service.Listener"/><!--配置监听器-->
</listeners>
<test name="novatest">
<classes>
<class name="com.xx.yy.SourceTest"/><!--我把整个测试类放进来-->
</classes>
</test>
<suite-files>
<suite-file path="test-output/testng-failed.xml"/><!--配置失败重跑文件-->
</suite-files>
</suite>
监听器实现如下:
/*
*监听出错时,打印log并截图
*/
import org.apache.log4j.Logger;
import org.testng.ITestResult;
import org.testng.Reporter;
import org.testng.TestListenerAdapter;
import static com.xx.yy.service.CommonMethod.driver;
/**
* Created by Administrator on 2017/11/15.
*/
public class Listener extends TestListenerAdapter{
private static Logger logger= Logger.getLogger(ScreenWallService.class);
@Override
public void onTestFailure(ITestResult tr){
String pictureName = CreateElementScreenshot.errorScreenshot(driver,"D:\\logs\\",".jpg");//调用截图方法
String name=tr.getMethod().getMethodName();//获取出现问题的测试类名
Reporter.log("出错方法名称:"+name+" 错误位置截图存放位置:<a href=\"d:\\logs\\"+pictureName+
"\" target=\"_blank\">D:\\logs\\</a>");//输出测试报告里面的log并且附上截图超链接
}
}
截图封装方法如下:
public static String errorScreenshot(WebDriver driver,String path,String pictureFormat){
String systemTime = CreateElementScreenshot.getCurrentSystemTime();//获取当前系统时间
String pictureName = systemTime + pictureFormat ;//图片命名由获取时间+后缀名拼接起来
File jpg = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);//截图
try {
FileUtils.copyFile(jpg, new File(path + pictureName));//图片存的路径
} catch (IOException e) {
e.printStackTrace();
}
return pictureName;//返回图片名称
}
测试报告截图:

网友评论