前段时间在群里有人说了下用这个插件来生成测试报告,发现生成的报告非常不错。就下来学习了一下,并集成到了testng上,下面来分享一下:

ExtentReports (by Anshoo Arora) is a HTML reporting library for .NET and Java which is extremely easy to use and creates beautiful execution reports. It shows test and step summary, test steps and status in a toggle view for quick analysis。(ExtentReports是一个可以非常容易用.net或者java来生成的一个漂亮的报告,用来显示我们的测试中步骤、摘要、状态以便用来分析)

先让大家看下报告样式:

是不是很漂亮,其中的还有帅选功能。以及其他的一些信息。

我的工程是maven项目,所以可以直接引入依赖,不能引入的,请自行下载,下载地址:http://extentreports.relevantcodes.com

maven工程中pom.xml加入一下依赖

        <dependency>
<groupId>com.relevantcodes</groupId>
<artifactId>extentreports</artifactId>
<version>2.40.2</version>
</dependency>

首先在testng @beforesuits中初始化一些ExtentReports,其中配置了报告的生成路径,以及一些其他一些信息,这里为了在监听中调用extent 我在这里写了一个get方法

private static String reportLocation = "report/ExtentReport.html";
protected static ExtentReports extent;
@BeforeSuite
public static void befores(){
extent = new ExtentReports(reportLocation, true);
extent.startReporter(ReporterType.DB, reportLocation);
extent.addSystemInfo("Host Name", "Lining");
} @AfterSuite
public static void afters(){ extent.close(); }
public static ExtentReports getextent(){
return extent;
}

重写testng监听:

import org.apache.log4j.Logger;
import org.testng.ITestContext;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;
import seleniumstudy.testcase.InitDriverCase;
import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
import com.relevantcodes.extentreports.LogStatus; public class TestngListener extends TestListenerAdapter {
private Logger logger = Logger.getLogger(TestngListener.class);
protected ExtentReports extent;
protected ExtentTest test; @Override
public void onTestStart(ITestResult tr) {
super.onTestStart(tr);
logger.info("【" + tr.getName() + " Start】");
extent=InitDriverCase.getextent();
test= extent.startTest(tr.getName());
} @Override
public void onTestFailure(ITestResult tr) {
super.onTestFailure(tr);
logger.info("【" + tr.getName() + " Failure】");
test.log(LogStatus.FAIL, tr.getThrowable());
extent.endTest(test); } @Override
public void onTestSkipped(ITestResult tr) {
super.onTestSkipped(tr);
logger.info("【" + tr.getName() + " Skipped】");
test.log(LogStatus.SKIP, "SKIP");
extent.endTest(test);
} @Override
public void onTestSuccess(ITestResult tr) {
super.onTestSuccess(tr);
logger.info("【" + tr.getName() + " Success】");
test.log(LogStatus.PASS, "Pass");
extent.endTest(test);
} @Override
public void onFinish(ITestContext testContext) {
super.onFinish(testContext);
}
}

ok,已经完毕,我们的测试用例,还按以前的testng方式书写就可以了,testng 的失败重跑以及失败自动截图在下一篇文章中实现。

extentreports 官方文档地址:http://extentreports.relevantcodes.com/java/#reviews

extentreports报告插件与testng集成(一)的更多相关文章

  1. extentreports报告插件与testng集成

    前段时间在群里有人说了下用这个插件来生成测试报告,发现生成的报告非常不错.就下来学习了一下,并集成到了testng上,下面来分享一下: ExtentReports (by Anshoo Arora) ...

  2. extentreports报告插件与testng集成(二)

    之前的一篇文章中,是把extentreports 的报告的初始方法写在driver的初始方法中,写报告的方法在testng的 onTest中,这次将这些方法全都拆出来,写在一个方法类中,这个类重现实现 ...

  3. extentreports报告插件之extentX之服务搭建(三)

    之前两个章节已经写完再extentreports报告插件与testng 的集成,但是发现 每次测试完后,生成的报告都要在单独发送,每个项目都有一份报告,如果项目多的话,管理起来就会很冗余. 这个给大家 ...

  4. 笔记:Maven 项目报告插件

    Maven 项目报告插件,都是对于前面生成的项目站点的内容丰富,因此都是基于项目站点的,生成的命令和生成项目站点一致(mvn site),项目报告插件的配置和一般插件不同,是在 project-> ...

  5. Gradle 1.12用户指南翻译——第四十一章. 项目报告插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  6. python nose测试框架全面介绍九---各种html报告插件对比

    一直在使用Nose-html-reporting,并输出html报告,但今天在使用时发出有点问题:于时,将python目前可能的html报告插件下载后进行对比,如下 一.Nose-html-repor ...

  7. Maven 项目报告插件

    Maven 项目报告插件,都是对于前面生成的项目站点的内容丰富,因此都是基于项目站点的,生成的命令和生成项目站点一致(mvn site),项目报告插件的配置和一般插件不同,是在 project-> ...

  8. Docker DevOps实战:Docker+Jenkins+Python+Pytest+Allure(1)- 创建Jenkins容器、安装Python环境、安装项目依赖类库、安装Allure报告插件

    前言: 本文实操笔记参照菠萝笔记,安装过程中的坑大家可以参考下 创建Jenkins容器 # 下载Jenkins镜像 [root@localhost ~]# docker pull jenkins/je ...

  9. 基于testng自动化添加allure报告展示以及jenkins集成

    本地执行方式: 1.下载地址 http://allure.qatools.ru/ 2.执行机器添加环境变量 如mac:vi /etc/profile export ALLURE_HOME=/Users ...

随机推荐

  1. 初识Java-分数录入系统

    package classTest; import java.util.Scanner; public class scoreArrangement { /**  * 选择界面(main)  */ p ...

  2. Convert.ToInt32()与int.Parse()的区别

    Convert.ToInt32()与int.Parse()的区别 (1)这两个方法的最大不同是它们对null值的处理方法:    Convert.ToInt32(null)会返回0而不会产生任何异常, ...

  3. 如何解决 win10连了VPN怎么上外网

    当前用户配置%AppData%\Microsoft\Network\Connections\Pbk与所有用户共享配置%ProgramData%\Microsoft\Network\Connection ...

  4. mysql 索引查询的问题

    之前碰到过一个问题,本来数据量不大的一张表,查询结果反应特别慢,不知道是什么原因. 后来才得知,查询的反应速度与结果集大小有关.  结果集越小反应速度越快.

  5. cocos2dx 3.2 Touch Listen和menu回调实现截屏

    在Cocos2d-X 3.x里面,已经集成了截屏功能,单独放在utils命名空间里,实现在base/ccUtils.h文件里面.看下函数申明 /** Capture the entire screen ...

  6. close-vs-shutdown-socke

    http://stackoverflow.com/questions/4160347/close-vs-shutdown-socket http://blog.csdn.net/jnu_simba/a ...

  7. ASP.NET MVC获取微信返回的json数据分页

    View @model JiaYe.WeiXin.Models.ViewModels.UserViewModel <div class="pull-left pagination&qu ...

  8. C#中的属性太邪恶了

    好懒,啥都不想写了.C#的属性伤透了我的心.只能相信记忆力和想象力能让我下次翻到这篇日志时能瞬间想到我们在谈瓦特. http://stackoverflow.com/questions/1224270 ...

  9. VR内容定制请找北京动软VR团队,长年承接VR/AR应用、游戏内容定制

    最近这一拔VR及AR浪潮得到业界的热捧,与2015年年底到2016年年初乐相.蚁视.睿悦.焰火工坊等VR创业公司,陆续发布融资的信息不无关系.业界也有统计数据称,约90%的VR投资案例,发生在2015 ...

  10. MyEclipse、Eclipse复制web项目

    假设现在已经有一个Java Web项目 ProjectA,现在想做另外一个项目ProjectB,它里面绝大部分功能和结构都可以复用ProjectA中的: 我们就可以通过复制项目的方法来做,具体步骤如下 ...