用ExtentReports美化你的测试报告
前言
在实际的自动化测试工作中经常会用到一些报告生成工具大概分为两类,一类是测试框架自带的报告生成工具如:JUnit+Ant、TestNG;另一类就是专用报告工具如ReportNG等。这些报告要么在UI设计上不满足我们的需求,要么在API和扩展性上比较差。所以,我们要寻求一个既美观大方,又支持扩展的报告插件。本文介绍的ExtentReport就是这样一个报告插件。
当前状况
下面来分别看看当前我们常用的报告
JUnit+Ant测试报告样例:
![](http://upload-images.jianshu.io/upload_images/1026266-1a6d9e34545ba227.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
TestNG测试报告样例
![](http://upload-images.jianshu.io/upload_images/1026266-aa7ec1ab4caffbec.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
ReportNG测试报告样例
![](http://upload-images.jianshu.io/upload_images/1026266-517fc3e616b9bcd3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
看到上面报告的样例是不是觉得报告页面丑陋而且死板不够炫啊,其实这些报告样式不光是丑陋也使用了一些过时的css样式并且扩展性比较差:
- JUnit与Ant的配合生成的报告简洁,但配置有点复杂无法立即上手。
- TestNG的报告虽然比详尽,但信息比较分散,定制开发的门槛比较高。
- ReportNG目前已经不再维护了Current Stable Version: 1.1.4
ExtentReports报告
这些报告的使用与配置方面的问题这里不再详述,大家可以去Google相应的文章,这里关键给大家推荐一个更实用的开源报告生成工具ExtentReports,其不光漂亮而且使用简单,并可以定制相应的样式,先上图看看:
![](http://upload-images.jianshu.io/upload_images/1026266-dd6a7d2b65e7630e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
![](http://upload-images.jianshu.io/upload_images/1026266-8a53f72bd9c7907f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
![](http://upload-images.jianshu.io/upload_images/1026266-9d91240f10647edf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
我们要改变
ExtentReports的介绍
ExtentReports是由Anshoo Arora创造的一个基于HTML5报告,它提供了Java与.NET类库,非常容易使用和创建出漂亮的自动化测试报告。既可以显示测试测试的Summary与步骤详细信息(状态、错误等)也提供分析Dashbord,这些页面使用Tab标签链接进行分离方便快速切换查看等优点
项目开源代码地址:https://github.com/anshooarora/extentreports
项目主页面:http://relevantcodes.com/extentreports2
文档页面 :http://relevantcodes.com/extentreports2/java/version2/docs.html
API文档:http://relevantcodes.com/Tools/ExtentReports2/javadoc/index.html
基本使用过程
下载与配置
当前For Java的最新版本是2.40.2,
![](http://upload-images.jianshu.io/upload_images/1026266-761d033c1c6c14d1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
1. 解压后并将extentreports-java-2.40.2.ja与lib目录中导入你的自动化测试工程中,这里以Eclipse的工程为例:
![](http://upload-images.jianshu.io/upload_images/1026266-75a37bf6b806a864.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
![](http://upload-images.jianshu.io/upload_images/1026266-33b1ba062ca00308.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
2. 在你的测试代码中或者需要使用报告的地方引用,按下面的步骤进行调用:
![](http://upload-images.jianshu.io/upload_images/1026266-3b478db5714ecfe6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
![](http://upload-images.jianshu.io/upload_images/1026266-ec22d82be1bc9fb7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
初始化ExtentReports
1.ExtentReports提供多个初始化接口,根据自己的需要来进行初始化,常用的如下:
ExtentReports extent = ExtentReports(String filePath, Boolean replaceExisting, NetworkMode networkMode)
![](http://upload-images.jianshu.io/upload_images/1026266-ef6c63cedfa14c82.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
2.参数说明:
filePath:html报告文件的路径
replaceExisting:是否覆盖存在的文件,true:覆盖,false,不覆盖,新的测试信息将会追加到报告中
NetworkMode :OFFLINE---html报告是使用离线的CSS和JS, ONLINE使用报告本地目录的中的CSS与JS,如果选择OFFLINE,将会复制相应的CSS与JS到%reportFolder%/extentreports目录中,这样就不需要在线的css与js样式了提高速度
其他初始方法详情请参考API文档:
http://relevantcodes.com/Tools/ExtentReports2/javadoc/index.html
![](http://upload-images.jianshu.io/upload_images/1026266-7011859cb1de6c93.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
增加测试信息到报告中
1.增加测试任务信息
![](http://upload-images.jianshu.io/upload_images/1026266-8eab3703ea0d8684.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
- 说明:调用startTest方法并传入任务的名称并返回一个ExtentTest类的实例taskTest的,标示测试的开始,这个名称将会显示 在测试报告的标题中,
- taskTest再调用setStartedTime方法来设置一个测试的开始时间
- extent.flush()是将信息写入报告文件中
2.增加测试用例信息:
![](http://upload-images.jianshu.io/upload_images/1026266-c78c5dd66e7574dc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
说明:调用过程与增加任务信息一样,只是再调一次startTest与setStartedTime
对应的报告实例如下:
![](http://upload-images.jianshu.io/upload_images/1026266-aa479d8d028635e7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
- 增加测试用例结果状态信息
![](http://upload-images.jianshu.io/upload_images/1026266-c2b35672ccb0a874.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
- 说明:caseTest.log(parameter1, parameter2)向报告中记录Case结果状态,如果是Pass调用,参数parameter1传入LogStatus.PASS,如果为Fail parameter1传入LogStatus. parameter2用于在状态栏显示什么样的信息(如显示 通过、passed等);
- 同样调用调用setEndedTime方法来设置一个测试的结束时间
- 测试用例的运行时长会在报告中进行自动计算。
- taskTest.appendChild(caseTest);是将此Case的测试结果关联到前面的测试任务上。效果如下图:
![](http://upload-images.jianshu.io/upload_images/1026266-021120c1774aa4da.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
- 如果重复此步骤还可以向下再添加一级的如测试步骤的结果状态,如下:
![](http://upload-images.jianshu.io/upload_images/1026266-e6e21dea95f72c10.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
4.增加测试任务结果信息
![](http://upload-images.jianshu.io/upload_images/1026266-9a072ba0147e8818.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
- 说明:测试任务结束后调用setEndedTime与endTest标志测试任务的结束
- 调用close方法关闭测试报告文件的读写。
- 测试任务的运行时长会在报告中进行自动计算
![](http://upload-images.jianshu.io/upload_images/1026266-d80cb3622d4cfb6f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
- 增加屏幕截图到测试用例的报告中:
![](http://upload-images.jianshu.io/upload_images/1026266-a94cb79ae642e853.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
说明:
仍然使用ExtentTest实例caseTest调用log(parameter1, parameter2)方法传入两个参数
LogStatus.INFO表示要增加一条信息,信息内容为parameter2始caseTest.addScreenCapture(screenPath), screenPage可以使用相对路径如:
"./Screenshots/" + snapShotFileName;
高级应用
LogStatus.INFO样式定制
在测试用例信息中增加制定化的Hmtl样式如下
![](http://upload-images.jianshu.io/upload_images/1026266-873685a2937619f4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
log方法中可以直接传入html字符串来定制自己想要的效果。
增加附加信息到报告中
将测试设备、测试任务、OS平台等相关的信息到报告中
![](http://upload-images.jianshu.io/upload_images/1026266-5cdc3ee5c67ee702.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
说明,将需要的信息放入Map中,报告类初始化后的实例extent调用addSystemInfo(sysInfo);来完成想关的信息插入,效果如下图:
![](http://upload-images.jianshu.io/upload_images/1026266-43802ae523e2bddd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/509)
作者:彭海波链接:https://www.jianshu.com/p/92eb0375fb43來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
转载于:https://www.cnblogs.com/kaola8023/p/8125177.html
用ExtentReports美化你的测试报告相关推荐
- ExtentReports生成自动化测试报告
ExtentReports介绍 ExtentReports用于生成自动化测试报告,相对于Testng自带的测试报告和ReportNG比较清晰.简洁,话不多说直接进入正题吧 引入依赖包 <depe ...
- 走进Java接口测试之测试报告ExtentReport
文章目录 一.引言 二.ExtentReports 简介 三.具体步骤 Step-1:添加 Maven 依赖包 Step-2:重写 ExtentTestNgFormatter 类 创建 MyExten ...
- 阿里软件测试工程师手把手教学——自动化测试报告太丑,怎么办?
TestNG的报告太难看了?测试结果维度显示受限?无法确定用例的优先级?查看错误信息不方便吗? Allure测试报告框架帮助您轻松实现"高"报告呈现.本文通过实例演示了如何将All ...
- 生成报告配置xml_自动化测试报告太丑?Allure拯救你!
TestNG报告太丑? 测试结果维度展现有限? 无法区分用例优先级? 不方便查看错误信息? Allure测试报告框架帮助你轻松实现"高大上"报告展示.本文通过示例演示如何从0到1集 ...
- 技术部突然宣布:JAVA开发人员全部要会接口自动化测试框架
整理了一些软件测试方面的资料.面试资料(接口自动化.web自动化.app自动化.性能安全.测试开发等),有需要的小伙伴可以文末加入我的学习交流qun,无套路自行领取~ 写在前边 用单元测试Junit完 ...
- 如何用TestNG满足开发自测?
写在前边 用单元测试Junit完全可以满足日常开发自测,为什么还要学习TestNG,都影响了我的开发进度! 最近技术部老大突然宣布:全体开发人员必须熟练掌握自动化测试框架TestNG,就有了上边同事们 ...
- python测试框架untest怎么循环执行_Python自动化测试-Unittest单元测试框架详解
python中unittest模块是用来做单元测试的. unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the ...
- python自动化测试框架有哪几种_Python自动化测试-Unittest单元测试框架详解
python中unittest模块是用来做单元测试的. unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the ...
- python做测试需要哪些技能_测试人员需要具备哪些基本技能
测试人员需要具备哪些基本技能或者素质.这个问题在几年前常见于软件测试工程师笔试题上.对这个问题,我觉得应该有新的解读.现在我们日常工作中需要应对的是,测试和开发的交叉领域,测试和运维的交叉领域.而不再 ...
最新文章
- 软件工程结对开发团队成员以及题目介绍
- 局域网服务器文件夹隐藏,局域网服务器共享文件夹访问权限设置win7隐藏无权限共享文件夹方法.docx...
- Mybatis(16)注解开发环境搭建
- [恢]hdu 2317
- win7/win8/win8.1 telnet命令无法使用的解决方案(提示不是内部命令或外部命令)
- 批量创建Linux用户账号
- 遇到不可重现问题怎么办
- 浅谈 wxWindows FrameWork
- win7升级RDP至8.1
- 毕业论文开题报告模板
- 目录没有.kaggle文件夹的解决方法
- kafka文档: 配置选项翻译
- 查看windows服务器型号,windows 查看服务器型号
- Javascript 检测键盘按键
- sdkd2019.3.20训练题目
- ArcGIS小知识(五)——arcmap锁定图层-编辑时只选择唯一图层
- 证明线性空间子空间的基可以扩充为整个空间的基
- 天猫用户重复购买预测——特征工程
- matlab 拉布拉斯矩阵,关于图像处理:C ++中的拉普拉斯矩阵计算
- BugKu CTF(杂项篇MISC)---细心的大象