Reportng测试报告添加失败用例截图
2017-10-16 14:01
423 查看
前言:由于reportng生成的测试报告里没有失败的用例截图,现在想自己修改reportng,加上截图等功能。这里详细的总结一遍实现过程
主要参考博客:
https://testerhome.com/topics/3594
http://tech.it168.com/a2013/0906/1530/000001530755_all.shtml
2、将源码zip包解压
3、在IDEA里点击file-new-Project from Existing Sources…
4、选择解压后的文件,然后一直下一步打开,打开后目录如下:
在该文件最后加如下代码
2、results.html.vm 修改结果的html,如下图:
代码如下:
3、class-results.html.vm 修改具体的内容显示
a、修改代码,在##Show logger output for the test里加一句,去除带有img标签的字符串:
如下图:
b、最后加这段代码,提取含有img标签的字符串:
4、ReportNGUtils.java 新增两个方法:
5、TestResultComparator.java 默认的ReportNG的报告中,是以字母序对执行的方法进行排序的,修改方法以执行先后顺序来进行排序
2、选中Artifacts,点击“+”,选择JAR-From modules with dependencies…
3、在打开的Create JAR from Modules弹窗,点击”ok”
4、在Output directory设置jar包导出目录,如图:
5、点击“Output Layout”处的“+”选择“Directory Content”
6、选择“resources”文件,这样才能把resources文件也打进jar包
7、最后,点击Build-Build Artifacts, 然后双击reportng.jar,如下图:
8、此时jar包已打好,如下图:
2、我重写了TestngListener的onTestFialure方法,添加显示截图的功能。使用了reportng的Reporter.log()方法输出失败用例截图地址,当用例失败时就显示截图。
代码如下:
3、最后在Jenkins构建后生成的报告如下:
主要参考博客:
https://testerhome.com/topics/3594
http://tech.it168.com/a2013/0906/1530/000001530755_all.shtml
一、IDEA导入reportng源码
1、下载reportng源码,地址:https://github.com/dwdyer/reportng2、将源码zip包解压
3、在IDEA里点击file-new-Project from Existing Sources…
4、选择解压后的文件,然后一直下一步打开,打开后目录如下:
二、修改代码
1、reportng.properties 增加报表Log Info和Screen Shot列(列名最好用英文,用中文会乱码,我还未解决)在该文件最后加如下代码
log=Log Info screenshot=Screen Shot
2、results.html.vm 修改结果的html,如下图:
代码如下:
#if ($failedTests.size() > 0) <table class="resultsTable"> <tr><th colspan="6" class="header failed">$messages.getString("failedTests")</th></tr> #foreach ($testClass in $failedTests.keySet()) <tr> <td colspan="1" class="group">$testClass.name</td> <td colspan="1" class="group">$messages.getString("duration")</td> <td colspan="1" class="group">$messages.getString("log")</td> <td colspan="1" class="group">$messages.getString("screenshot")</td> </tr> #set ($classResults = $failedTests.get($testClass)) #parse ("org/uncommons/reportng/templates/html/class-results.html.vm") #end </table> #end
3、class-results.html.vm 修改具体的内容显示
a、修改代码,在##Show logger output for the test里加一句,去除带有img标签的字符串:
$utils.removeImage($line)<br />
如下图:
b、最后加这段代码,提取含有img标签的字符串:
<td class="screenshot"> #set ($output = $utils.getTestOutput($testResult)) #if ($output.size() > 0) <div class="screenshotimage"> #foreach( $line in $output ) #if ($meta.shouldEscapeOutput()) $utils.escapeHTMLString($line)<br /> #else $utils.getImageString($line)<br /> #end #end </div> #end </td>
4、ReportNGUtils.java 新增两个方法:
public String getImageString(String s) { String regex = "(<img(.*?)/>)"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(s); while (matcher.find()) { String group = matcher.group(1); return group; } return ""; } public String removeImage(String s) { return s.replaceAll("<img(.*?)/>",""); }
5、TestResultComparator.java 默认的ReportNG的报告中,是以字母序对执行的方法进行排序的,修改方法以执行先后顺序来进行排序
public int compare(ITestResult result1, ITestResult result2) { int longresult2 = 0; if (result1.getStartMillis() < result2.getStartMillis()) { longresult2 = -1; } else { longresult2 = 1; } return longresult2; }
三、重新打jar包
1、点击File-Project Structure…打开Project Structure弹窗2、选中Artifacts,点击“+”,选择JAR-From modules with dependencies…
3、在打开的Create JAR from Modules弹窗,点击”ok”
4、在Output directory设置jar包导出目录,如图:
5、点击“Output Layout”处的“+”选择“Directory Content”
6、选择“resources”文件,这样才能把resources文件也打进jar包
7、最后,点击Build-Build Artifacts, 然后双击reportng.jar,如下图:
8、此时jar包已打好,如下图:
四、使用最新的jar包
1、把生成的jar包替换掉本地maven仓库下的reportng.jar,一般是这个目录:.m2\repository\org\uncommons\reportng\1.1.4
2、我重写了TestngListener的onTestFialure方法,添加显示截图的功能。使用了reportng的Reporter.log()方法输出失败用例截图地址,当用例失败时就显示截图。
代码如下:
public class TestngListener extends TestListenerAdapter { public static WebDriver driver; public void onTestFailure(ITestResult tr) { super.onTestFailure(tr); try { takeScreenShot(tr); showScreenShot(tr); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } /** * Jenkings显示失败截图 * @param result */ public void showScreenShot(ITestResult result) { //jenkins工作目录对应项目的截图路径 String filePath = "http://192.168.22.35:8080/jenkins/job/ZXKJAutoTest/ws/FailureScreenShot"; Reporter.log("<img src='"+filePath+"/"+result.getName()+".png' hight='300' width='500'/>"); } /** * 获取用例失败截图 * @param tr * @throws IOException */ public void takeScreenShot(ITestResult tr) throws IOException{ SimpleDateFormat smf = new SimpleDateFormat("MMddHHmmss") ; String curTime = smf.format(new java.util.Date()); // String fileName = tr.getName()+"_"+curTime+".png"; String fileName = tr.getName()+".png"; File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(srcFile, new File("FailureScreenShot/"+fileName)); }
3、最后在Jenkins构建后生成的报告如下:
相关文章推荐
- 实现用例中随意截图并添加到报告中
- Webdriver+Testng实现测试用例失败自动截图功能
- 跳过一些坑,一张图弄明白TestNG多用例执行添加监听失败截图
- Webdriver+Testng实现测试用例失败自动截图功能
- 用Selenium录制添加到购物车的测试用例
- 测试要点的格式、测试用例的格式、缺陷报告的格式
- ReportNg测试报告的定制修改(二)
- reportNG无法产生html的测试报告
- 主动性营销系统执行测试用例_报告.doc
- 关于reportng生成的测试报告不按测试执行顺序的解决办法
- TestNG监听器实现用例运行失败自动截图、重运行功能
- 用例失败后截图
- Jmeter+ant+jenkins测试报告优化--添加QPS数据显示
- Jmeter+ant+jenkins测试报告优化添加QPS数据显示
- reportNG定制化修改-支持中文、首页添加饼图、报告显示图片
- ReportNg测试报告的定制修改
- 生成比较美观的appium自动化测试报告,并且包含测试截图
- ant_Jmeter持续集成测试报告优化之添加throughput显示
- ReportNG 手把手教你弄测试报告
- TestNG - 添加图片或者链接到测试报告