前言

在实际的自动化测试工作中经常会用到一些报告生成工具大概分为两类,一类是测试框架自带的报告生成工具如:JUnit+Ant、TestNG;另一类就是专用报告工具如ReportNG等。这些报告要么在UI设计上不满足我们的需求,要么在API和扩展性上比较差。所以,我们要寻求一个既美观大方,又支持扩展的报告插件。本文介绍的ExtentReport就是这样一个报告插件。

当前状况

下面来分别看看当前我们常用的报告

JUnit+Ant测试报告样例:

 
Paste_Image.png

TestNG测试报告样例

 
Paste_Image.png

ReportNG测试报告样例

 
Paste_Image.png

看到上面报告的样例是不是觉得报告页面丑陋而且死板不够炫啊,其实这些报告样式不光是丑陋也使用了一些过时的css样式并且扩展性比较差:

  • JUnit与Ant的配合生成的报告简洁,但配置有点复杂无法立即上手。
  • TestNG的报告虽然比详尽,但信息比较分散,定制开发的门槛比较高。
  • ReportNG目前已经不再维护了Current Stable Version: 1.1.4

ExtentReports报告

这些报告的使用与配置方面的问题这里不再详述,大家可以去Google相应的文章,这里关键给大家推荐一个更实用的开源报告生成工具ExtentReports,其不光漂亮而且使用简单,并可以定制相应的样式,先上图看看:

 
Paste_Image.png
 
Paste_Image.png
 
Paste_Image.png

我们要改变

ExtentReports的介绍

ExtentReports是由Anshoo Arora创造的一个基于HTML5报告,它提供了Java与.NET类库,非常容易使用和创建出漂亮的自动化测试报告。既可以显示测试测试的Summary与步骤详细信息(状态、错误等)也提供分析Dashbord,这些页面使用Tab标签链接进行分离方便快速切换查看等优点

基本使用过程

下载与配置

当前For Java的最新版本是2.40.2,

 
图片 2.png
1. 解压后并将extentreports-java-2.40.2.ja与lib目录中导入你的自动化测试工程中,这里以Eclipse的工程为例:
 
Paste_Image.png
 
Paste_Image.png
2. 在你的测试代码中或者需要使用报告的地方引用,按下面的步骤进行调用:
 
Paste_Image.png
 
Paste_Image.png

初始化ExtentReports

1.ExtentReports提供多个初始化接口,根据自己的需要来进行初始化,常用的如下:
ExtentReports extent = ExtentReports(String filePath, Boolean replaceExisting, NetworkMode networkMode)

 
Paste_Image.png

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

 
Paste_Image.png

增加测试信息到报告中

1.增加测试任务信息

 
Paste_Image.png
  • 说明:调用startTest方法并传入任务的名称并返回一个ExtentTest类的实例taskTest的,标示测试的开始,这个名称将会显示 在测试报告的标题中,
  • taskTest再调用setStartedTime方法来设置一个测试的开始时间
  • extent.flush()是将信息写入报告文件中

2.增加测试用例信息:

 
Paste_Image.png

说明:调用过程与增加任务信息一样,只是再调一次startTest与setStartedTime
对应的报告实例如下:

 
Paste_Image.png
  1. 增加测试用例结果状态信息
 
Paste_Image.png
  • 说明:caseTest.log(parameter1, parameter2)向报告中记录Case结果状态,如果是Pass调用,参数parameter1传入LogStatus.PASS,如果为Fail parameter1传入LogStatus. parameter2用于在状态栏显示什么样的信息(如显示 通过、passed等);
  • 同样调用调用setEndedTime方法来设置一个测试的结束时间
  • 测试用例的运行时长会在报告中进行自动计算。
  • taskTest.appendChild(caseTest);是将此Case的测试结果关联到前面的测试任务上。效果如下图:
 
Paste_Image.png
  • 如果重复此步骤还可以向下再添加一级的如测试步骤的结果状态,如下:
 
Paste_Image.png

4.增加测试任务结果信息

 
Paste_Image.png
  • 说明:测试任务结束后调用setEndedTime与endTest标志测试任务的结束
  • 调用close方法关闭测试报告文件的读写。
  • 测试任务的运行时长会在报告中进行自动计算
 
Paste_Image.png
  1. 增加屏幕截图到测试用例的报告中:
 
Paste_Image.png

说明:
仍然使用ExtentTest实例caseTest调用log(parameter1, parameter2)方法传入两个参数
LogStatus.INFO表示要增加一条信息,信息内容为parameter2始caseTest.addScreenCapture(screenPath), screenPage可以使用相对路径如:
"./Screenshots/" + snapShotFileName;

高级应用

LogStatus.INFO样式定制

在测试用例信息中增加制定化的Hmtl样式如下

 
Paste_Image.png

log方法中可以直接传入html字符串来定制自己想要的效果。

增加附加信息到报告中

将测试设备、测试任务、OS平台等相关的信息到报告中

 
Paste_Image.png

说明,将需要的信息放入Map中,报告类初始化后的实例extent调用addSystemInfo(sysInfo);来完成想关的信息插入,效果如下图:

 
Paste_Image.png

作者:彭海波
链接:https://www.jianshu.com/p/92eb0375fb43
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

用ExtentReports美化你的测试报告的更多相关文章

  1. 使用extentreports美化testng报告2,增加监听

    有兴趣研究了extentreports报告美化插件,但是因为发现插件有很多内容不能自定义,所以放弃了这个插件,我扩充了官方代码的demo,在testng中增加了监听,并打印了一些测试用例,现在我把两个 ...

  2. 使用extentreports美化报告

    无意之间在整理testng 报告输出的文档时,发现一个美化testng的报告的插件,感觉确实“漂亮”,但是还不确定是否实用,案例来自官方网站自己添了一些内容,更改了存放路径,本地目前已确定可正常运行, ...

  3. 测试报告ExtentReport改进

    具体步骤Step-1:在pom.xml文件中添加 Maven 依赖包 <?xml version="1.0" encoding="UTF-8"?> ...

  4. Robotium测试报告的生成方法(下)

    7.4 测试报告优化 通过上面的三种方法,我们都可以得到一个Xml格式的测试报告,不过这不是我们想要的,因为这样的报告读起来很费劲,而且这样的报告发给领导们也是不行的.所以我们要美化一下才行,一般都是 ...

  5. 技术部突然宣布:JAVA开发人员全部要会接口自动化测试框架

    整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 写在前边 用单元测试Junit完全可以满足日常开发自测,为什么还 ...

  6. HTMLTestRunner测试报告美化

    前言 ​最近小伙伴们在学玩python,,看着那HTMLTestRunner生成的测试报告,左右看不顺眼,终觉得太丑.搜索了一圈没有找到合适的美化报告,于是忍不住自已动手进行了修改,因习惯python ...

  7. 行为驱动:Cucumber + Selenium + Java(二) - extentreports 测试报告+jenkins持续集成

    1.extentreports 测试报告 pom文件 <dependency> <groupId>com.vimalselvam</groupId> <art ...

  8. JUnit报告美化——ExtentReports

    美化后效果 美化后的报告,页面清晰简洁.重要信息都可以体现出来,用例通过率,失败的用例和失败原因 主要技术点 ExtentReports JUnit的@Rule 重写TestWatcher的succe ...

  9. Java接口自动化测试之TestNG测试报告ExtentReports的应用(三)

    pom.xml导入包 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

随机推荐

  1. oracle 备份恢复之recover database的四条语句区别

    1  recover database using backup controlfile2  recover database until cancel3  recover database usin ...

  2. Oracle RAC 服务启动流程

    启动流程步骤层次梳理:第一层:OHASD 启动: cssdagent - 负责启动 CSSD 的 Agent.orarootagent - 负责启动所有 root 用户下的 ohasd 资源 的Age ...

  3. Bootstap学习的实用网站

    基本CSS样式 http://v2.bootcss.com/base-css.html 93 Twitter Bootstrap HTML Templates https://shapebootstr ...

  4. 洛谷P3119草鉴定

    题目 草鉴定,tarjan可以用来缩点,优化spfa的时间, 缩点之后就是一个\(DAG\)了,因此完全可以用来跑spfa上的最长路,然后枚举每条边,查看是否这条边的两个节点分别可以到达起点所在的强连 ...

  5. P1021 邮票面值设计——搜索+完全背包

    P1021 邮票面值设计 题目意思是你最多用n张邮票,你可以自己设定k种邮票的面值,每种邮票数量无穷,你最多能用这k种邮票在不超过n张的情况下,组合成的价值要求是从1开始连续的, 求最大能连续到多少: ...

  6. Mac cpu过高问题分析及解决

    1.mds.mds_stores.mdworker 关闭: sudo mdutil -a -i off 打开: sudo mdutil -a -i on

  7. C语言应用--数据类型定制一结构体数组

    结构体定义成功后,其实和c语言内部的类型区别也不大了,自然可以用来定义结构体类型的数组了.我们根据结构体定义的方式不同,分别用多种方式定义结构体数组:

  8. REST架构原则初探

    目录 什么是RESTful架构? REST 架构原则 资源(Resource) 表现层(Representation) 状态转换(State Transfer) 无状态通信原则 RESUful API ...

  9. oracle中的trigger

    https://blog.csdn.net/indexman/article/details/8023740/ https://www.cnblogs.com/sharpest/p/7764660.h ...

  10. 基于python的人脸识别(检测人脸、眼睛、嘴巴、鼻子......)

    本文链接:https://blog.csdn.net/James_Ray_Murphy/article/details/79209172 import numpy as np import cv2 # ...