用ExtentReports美化你的测试报告

前言

在实际的自动化测试工作中经常会用到一些报告生成工具大概分为两类,一类是测试框架自带的报告生成工具如: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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341

推荐阅读更多精彩内容