Extentreports报告插件与TestNG集成

发表于:2018-1-05 10:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:#甜甜8023    来源:博客园

  前段时间在群里有人说了下用这个插件来生成测试报告,发现生成的报告非常不错。就下来学习了一下,并集成到了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 的失败重跑以及失败自动截图在下一篇文章中实现。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号