博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Python把Gtest XML测试结果转换为HTML格式
阅读量:7008 次
发布时间:2019-06-28

本文共 3360 字,大约阅读时间需要 11 分钟。

在最近的测试中,使用gtest测试框架对c语言代码进行测试,结果以XML文件来保存,但是测试结果的查阅和分析非常不方便。便想着把xml的结果直接转为HTML文件,方便和Jenkins系统对接显示。因现在的测试方法是使用Python脚本来控制gtest的测试文件运行的,故选用Python脚本来实现xml转html的功能。

  • 先看结果:

个人对于html不是很熟悉,只是简单的了解各个元素。要求只有一个,生成的结果清晰明了,便于查阅即可。

 

  • 环境准备:

安装libxml2 libxstl模块

Python 2.7环境

Ubuntu 14.04 验证下通过。

 

  • 输出:

执行结果生成同名的html文件。

 

Python代码如下此段代码是在网上搜索参考的:

原文地址如下:http://blog.csdn.net/zhaoweikid/article/details/74837

我这里进行了简单的修改,增加了命令行参数。

#!/usr/bin/python#coding=utf8import sysimport libxml2import libxsltclass compoundXML:    def __init__(self):        self._result=None        self._xsl=None        self._xml=None        def do(self,xml_file_name,xsl_file_name='gtest.xsl'):        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 def xml2html(xml_file):    test=compoundXML()    test.do(xml_file)    test.save_translated(xml_file+'.html')    test.release()if __name__ =='__main__':    filename=sys.argv[1];    test=compoundXML()    test.do(filename)    #print test.get_translated()    test.save_translated(filename+'.html')    test.release()

 

但是这个原文链接讲的非常不详细,只是把Python脚本写了,没有放xsl模板,在尝试的时候尝试了好久,才明白过来需要一个xsl模板,在使用xsl模板来解析gtest测试结果的过程中,调试了好久,终于有一个让自己满意的显示结果。

Xslt解析xml生成html文件,是按照xsl文件的模板来解析,这些都是教训哈,摸索了好久。

关键是根据gtest的xml文件格式,编写一个合适的xsl模板。

解析gtest xml的Xsl模板如下:

Testcase Num Failure Num
TestSuites
Testcase Result ErrorInfo
Failure
Success

  

Xml文件如下:

 

使用方法:

把Python脚本和gtest.xsl模板放在同一个目录下。

一个是使用命令行:

./xml2html.py gtest_reult.xml

二是作为函数调用:

使用xml2html(xml_file)函数进行转换。

 

转载于:https://www.cnblogs.com/StitchSun/p/4233904.html

你可能感兴趣的文章