|
在最近的测试中,使用gtest测试框架对c语言代码进行测试,结果以XML文件来保存,但是测试结果的查阅和分析非常不方便。便想着把xml的结果直接转为HTML文件,方便和Jenkins系统对接显示。因现在的测试方法是使用Python脚本来控制gtest的测试文件运行的,故选用Python脚本来实现xml转html的功能。
个人对于html不是很熟悉,只是简单的了解各个元素。要求只有一个,生成的结果清晰明了,便于查阅即可。
安装libxml2 libxstl模块
Python 2.7环境
Ubuntu 14.04 验证下通过。
执行结果生成同名的html文件。
Python代码如下此段代码是在网上搜索参考的:
原文地址如下:http://blog.iyunv.com/zhaoweikid/article/details/74837
我这里进行了简单的修改,增加了命令行参数。
#!/usr/bin/python
#coding=utf8
import sys
import libxml2
import libxslt
class 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)函数进行转换。
|
|
|