Robotium测试报告的生成方法(下)
7.4 测试报告优化
通过上面的三种方法,我们都可以得到一个Xml格式的测试报告,不过这不是我们想要的,因为这样的报告读起来很费劲,而且这样的报告发给领导们也是不行的。所以我们要美化一下才行,一般都是把Xml文件给转化成HTML格式的。
经过查询,找到了一种通过ant_junit下面的一个junit-noframes.xsl来美化我们的测试报告,下面我们讲解一下方法:
(1)下载ant-junit.jar
junit-noframes.xsl文件在ant-junit.jar包中,所以我们要先在网上下载这个包。下载地址我忘记了,你可以自己搜索,也可以在我们本章后面提供的网盘地址中下载。下载后解压ant-junit.jar,在下面的路径中会看到junit-noframes.xsl。
junit-noframes.xsl文件路径:\ant-junit\org\apache\tools\ant\taskdefs\optional\junit\xsl\
(2)整理测试用例报告和junit-noframes.xsl
将测试用例报告和junit-noframes.xsl都入到我们在上面新建的文件夹test-output文件夹中,这样方便我们整理测试报告。
(3)美化测试报告
通过python或是java将Xml,Xsl文件换化成HTML文件,具体的方法我们下节介绍。转换后的测试报告如图7.4.1所示:
7.4.1生成的HTML测试报告
此时生成的HTMl报告是默认的junit-noframes.xsl筛选的结果,包含的信息也许不是我们想要的,所以要修改junit-noframes.xsl文件,生成我们想要的报告。
(4)修改junit-noframes.xsl
为了测试我们想的效果:先展示出总体的运行情况,然后列出所有测试用例的执行情况,我们要修改junit-noframes.xsl文件。在修改这个文件之前,我们手动改一下测试报告文件junit-report.xml,增加一些儿测试用例的运行结果。当时如果正常运行的情况下会有很多测试用例的结果,现在我们只有一个测试用例,为了达到效果,我们修改如下:
然后根据我们的需要,修改junit-noframes.xsl。由于我对xsl文件不太了解,只好一边学习一边来修改了,修改的效果不是太好,大家可以根据需要,对期进行更好的优化,希望我的用例能起到抛砖引玉的效果。
junit-noframes.xsl修改如下:
源码太多了,去源址看吧:
http://blog.csdn.net/dragonking0318/article/details/45478891
然后根据修改后的xsl文件再生成相应的HTML报告,此时的报告就美观多了,如图7.4.2所示:
图7.4.2 定制后的HTML报告
7.5 XML XSL文件转化成HTML格式
将XML,XSL文件转化成HTMl格式的文件,比较清楚明白。虽然还不能做到像TestNG那样产生美观的报告,不过转换后的文件展示比直接的Xml方式展示的直观了许多。下面我们介绍两种转换方法:
7.5.1 python转换法
Python利用libxml2,libxstl可以方便地将xml,xsl文件转换成对应的HTML文件,具体的方法如下:
(1)安装libxml2 libxstl
官方网站:http://xmlsoft.org/XSLT/index.html
安装包下载:http://xmlsoft.org/sources/
下面是windows平台的exe安装文件下载:
http://xmlsoft.org/sources/win32/python/
(2)编写脚本
我们将测试用例文件junit-report.xml和修改后的junit-noframes.xsl都放到test-output文件夹下。然后在此文件夹下新建python文件CreateReport.py,脚本内容如下所示:
- # -*- coding: mbcs -*-
- #!/usr/bin/python
- import libxml2, libxslt
- class compoundXML:
- def __init__(self):
- self._result = None
- self._xsl = None
- self._xml = None
- def do(self, xml_file_name, xsl_file_name):
- self._xml = libxml2.parseFile(xml_file_name)
- if self._xml == None:
- return 0
- styledoc = libxml2.parseFile(xsl_file_name)
- if styledoc == None:
- return 0
- self._xsl = libxslt.parseStylesheetDoc(styledoc)
- if self._xsl == None:
- return 0
- self._result = self._xsl.applyStylesheet(self._xml, None)
- def get_xml_doc(self):
- return self._result
- def get_translated(self):
- return self._result.serialize('UTF-8')
- def save_translated(self, file_name):
- self._xsl.saveResultToFilename(file_name, self._result, 0)
- def release(self):
- '''''
- this function must be called in the end.
- '''
- self._xsl.freeStylesheet()
- self._xml.freeDoc()
- self._result.freeDoc()
- self._xsl = None
- self._xml = None
- self._result = None
- if __name__ == '__main__':
- test = compoundXML()
- test.do('junit-report.xml', 'junit-noframes.xsl')
- print test.get_translated()
- test.save_translated('junit-report.html')
- test.release()
此脚本是通过xsl文件将xml文件转换成对应的html文件,具体代码请自行分析学习。
(3)生成报告
打开命令行,通过执行命令pythonCreateReport.py,就可以生成测试报告文件junit-report.html.生成的报告如图7.4.2所示。
用python脚本转化xml文件,比较快捷,有任何变动,只需要再运行一下命令即可。缺点是你得会python语言,并且在测试环境下配置了python的运行环境。
7.5.2 Xalan处理器转换xml文件
上面的方法需要我们会python语言,可是我们在利用Robotium来编写测试用例的时候,一般用的是java语言。为了生成一个测试报告,再去学习一个语言确实不划算。Java也有对应的方法将Xml xsl文件转换成html文件的方法,如http://lanqiaoyeyu.iteye.com/blog/1169623,我试了此方法,可是总提示错误,查了一下原来这是一个bug,只好考虑一下还有没有其他的方法。
答案是肯定的,我们可以利用Xalan处理器来转换xml文件,此方法比较简单,而且不用编写代码。具体方法如下:
(1)下载xalan包
下载最新的Xalan包,下载地址:http://apache.fayea.com/xalan/xalan-j/binaries/
(2)提取xalan.jar和serializer.jar
解压刚刚下载的包,从下面将xalan.jar和serializer.jar拷贝到test-output文件夹下,以备我们生成测试报告的时使用。
(3)生成测试报告
在DOS命令行下输入:
java -classpath serializer.jar -jarxalan.jar
命令会输出xalan.jar的各种选项,以下是常用选项:
-IN:指定需要转换的XML;
-XSL:指定使用的XSLT样式单,如果在XML文档中已经引入了XSLT,则可省略此项;
-OUT:指定转换后输出的目标文档。
我们要生成测试报告的话,需要输入下面的命令:
d:\robotiumautotest\ZhongChouDemo\test-output>java -classpathserializer.jar -jar xalan.jar -IN junit-report.xml -XSL junit-noframes.xsl -OUTjunit-report1.html
命令执行完成后,命令行下没有任何输出,不过在test-output中会生成测试报告文件junit-report1.html.用浏览器打开后,效果如图7.4.2所示。
用xalan包生成html文件比较方便,而且是我们java系列的,结合从手机上拉出测试报告,然后生成html格式的报告,再优化一下发送邮件等功能可以写成一个批处理文件。在测试用例执行完成后执行这个批处理文件,一气呵成!!
7.6 本章小结
本章我们讲述了三种生成测试报告的方法,其实原理都是一样的,读者可以根据自己的需要选择合适的方法。然后我们又对生成的报告进行优化,将Xml格式的报告转化成html格式的。其实这个报告还可以更加美化一下,用php将生成的HTMl报告再次优化,展示的更加美观。请大家自行学习,本教程就不再介绍了。
另外,教程中用到的jar在网上不太容易下载,我就提供了一个百度网盘的下载地址:
http://pan.baidu.com/s/1ntDmWo5
转载于:https://www.cnblogs.com/songzhenhua/p/9312784.html
Robotium测试报告的生成方法(下)相关推荐
- Robotium测试报告的生成方法(上)
7.1 使用junit-report生成报告 这个是参考网上的:http://www.xuebuyuan.com/2148574.html,经我个人验证是可行的方法,网上写的挺详细的,不过有些不太清楚 ...
- 压力测试工具Apache JMeter:3:压力测试报告的生成方法
Apache JMeter是一个纯Java开发的用于负载测试或者性能测试的开源软件.这篇文章介绍一下使用JMeter进行压力测试的两种压力测试报告生成的方法. 环境准备 关于Apache JMeter ...
- ajax使用json下拉框,ajax请求后台得到json数据后动态生成树形下拉框的方法
如下所示: $(function(){ $.ajax({ url:"departmentAction_getAllDep.action", type:"post" ...
- CNN可视化又添新作,南大开源Group-CAM:高效的显著图生成方法|CVPR2021
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨孙裕道 审稿丨邓富城 编辑丨极市平台 导读 最近南京大学的一篇论文收录于CVPR2021,该论文 ...
- UUID介绍与生成方法
什么是UUID? UUID是Universally Unique Identifier的缩写,它是在一定的范围内(从特定的名字空间到全球)唯一的机器生成的标识符.UUID具有以下涵义: 经由一定的算法 ...
- Savior:渗透测试报告自动生成工具
系统框架 前端:Ant Design Pro 后端:Django REST Framework 数据库:Mysql 主要功能 用户管理:主要是方便统计漏洞的发现者,后续可能大概也许会添加漏洞统计模块, ...
- CIKM 2020 | 知识库问答复杂问题的分层查询图生成方法
©PaperWeekly 原创 · 作者|舒意恒 学校|南京大学硕士生 研究方向|知识图谱 导读 本文讨论知识库问答(KBQA)中查询图生成的强化学习方法.给定一个自然语言问题,知识库问答尝试自动从存 ...
- 窗口分析函数_14_生成相邻下一个元素
生成相邻下一个元素 需求描述 需求:将EMP表里的部门编号为20的SAL字段按照由高到低排序取相邻的下一个SAL. 解决方法:通过lag OVER()来完成. 注: 数据库数据集SQL脚本详见如下链接 ...
- 更加安全的密钥生成方法Diffie-Hellman
更加安全的密钥生成方法Diffie-Hellman 之前我们谈到了密钥配送的问题,这个世界是如此的危险, 一不小心通信线路就会被监听,那么我们怎么在这种不安全的线路中传递密钥呢? 这里我们介绍一下Di ...
- 点云数据生成三维模型_可直接编辑的高质量3D生成模型:三维深度生成方法SDM-NET...
机器之心发布作者:赵悠悠 中科院计算所.香港城市大学.英国卡迪夫大学以及加拿大西蒙弗雷泽大学的研究者,近日提出了一种能够表达几何细节和复杂拓扑结构的三维模型深度生成方法 SDM-NET,解决了之前方法 ...
最新文章
- ajax formdata提交上传,Ajax提交用FormData()上传文件
- MSSQLSERVER数据库- SQL交叉表
- H.264边缘块进行帧内预测时,上边缘和左边缘块的预测情况。
- 201771010112罗松《面向对象程序设计(java)》第三周学习总结
- 简单话题:LED呼吸灯和串口LED指示灯
- ECMAScript 发展简史
- windows用户模式与内核模式
- 为抖音而生的多闪,如何获取抖音的用户数据?
- O0 O1 O2 O3优化原理
- [Docer]docker镜像操作
- 天下难事,必作于易;天下大事,必作于细。
- C--利用switch()浅浅做一个成绩等级划分小程序
- protege 简介
- 【内网穿透】zerotier构建局域网,闲置电脑充当高性能服务器。
- spring入门例子
- ubuntu 下蓝牙无法连接
- Java多线程之JUC
- 软考中级(软件设计师)——面向对象程序设计(C++Java二选一的题15分-目标3分)
- 如何做好网络口碑营销?
- 快速上手 Kotlin 开发系列之数据类和枚举
热门文章
- Lambda表达式与委托
- hibernate 的session一级缓存
- JCheckBox 默认选择_了解GoldWave使用习惯的一些默认设置
- Pandas系列(五)对缺失值的处理
- 小项目--猜年龄游戏
- [BZOJ5329] [SDOI2018] 战略游戏
- python学习笔记之读取配置文件【转自https://my.oschina.net/u/3041656/blog/793467】
- Introduction to dnorm, pnorm, qnorm, and rnorm for new biostatisticians
- WPF TextBox提示文字设定
- react-native 开发在Android模拟器上运行