• 用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


    作者:彭海波
    链接:https://www.jianshu.com/p/92eb0375fb43
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    G1垃圾回收器的参数配置(JDK9的默认垃圾回收器)
    top.layer.open父子调用
    前端非空方法
    JS接收后台拼接好的标签 Uncaught SyntaxError: Invalid or unexpected token
    oracle 历史记录查询sql
    【python】使用pyinstaller将python程序打包成可执行的exe
    【python】使用pyinstaller打包exe闪退,cmd查看exe报错原因
    【python】turtle绘图几个超好看的颜色
    【python】trutle绘制送给女神的玫瑰花图
    【python】turtle龟绘制无敌螺旋转
  • 原文地址:https://www.cnblogs.com/kaola8023/p/8125177.html
Copyright © 2020-2023  润新知