将NoseXUnit生成的XML以报表的形式显示~
2014-05-22 03:46
183 查看
# -*- coding:gbk -*-
from xml.etree import ElementTree
import datetime
def gettestresult():
filename='C:/Users/Pan/Desktop/test/test.xml'
etree = ElementTree.parse(filename)
root = etree.getroot()
#测试结果汇总
resulttotal = {}
resulttotal['ALL'] = root.get('tests')
resulttotal['NG'] = root.get('failures')
resulttotal['Block'] = root.get('errors')
resulttotal['NT'] = root.get('skip')
resulttotal['PASS'] = int(resulttotal['ALL'])-int(resulttotal['NT'])-int(resulttotal['NG'])-int(resulttotal['Block'])
#详细数据
results = []
for testnode in root:
result = {}
result['modulename'] = testnode.get('classname')
result['testcasename'] = testnode.get('name')
result['usetime'] = testnode.get('time')
try:
result['info_type'] = testnode[0].get('type')
result['info_message'] = testnode[0].get('message')
result['info_text'] = testnode[0].text
if testnode[0].tag == 'failure':
result['result'] = '未通过'
elif testnode[0].tag == 'error':
result['result'] = '阻塞'
else:
result['result'] = '未测试'
except:
result['info_type'] = ''
result['info_message'] = ''
result['info_text'] = ''
result['result'] = u'通过'
#通过映射表一一对应
result['taskname'] = ''
results.append(result)
return resulttotal,results
def buildhtml():
filee = open('test.html','w')
#头部
filee.write('''
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>%(title)s</title>
</head>
<body>
'''%({'title':u'TestReport'}))
#测试结果汇总数据表表头
filee.write('''
<br>
<table width="500" border="1">
<tr>
<td>测试时间:</td>
<td colspan="4">%(datetime)s</td>
</tr>
<tr>
<td width="100">用例总数</td>
<td width="100">通过数</td>
<td width="100">失败数</td>
<td width="100">阻塞数</td>
<td width="100">未测试数</td>
</tr>
'''%({'datetime':datetime.datetime.today()}))
#测试结果汇总数据表内容
filee.write('''
<tr>
<td>%(ALL)s</td>
<td>%(PASS)s</td>
<td>%(NG)s</td>
<td>%(Block)s</td>
<td>%(NT)s</td>
</tr>
</table>
'''%(gettestresult()[0]))
#详细数据数据表表头
filee.write('''
<br>
<table width="1350" border="1">
<tr>
<td width="100" rowspan="2">模块</td>
<td width="100" rowspan="2">用例</td>
<td width="100" rowspan="2">耗时</td>
<td width="100" rowspan="2">测试任务</td>
<td width="100" rowspan="2">运行结果</td>
<td colspan="3">备注</td>
</tr>
<tr>
<td width="100">类型</td>
<td width="150">信息</td>
<td width="700">详细说明</td>
</tr>
''')
#详细数据数据表内容
for atestresult in gettestresult()[1]:
filee.write('''
<tr>
<td>%(modulename)s</td>
<td>%(testcasename)s</td>
<td>%(usetime)s</td>
<td>%(taskname)s</td>
<td>%(result)s</td>
<td>%(info_type)s</td>
<td>%(info_message)s</td>
<td>%(info_text)s</td>
</tr>
'''%(atestresult))
#尾部
filee.write('''
</table>
</body>
</html>
''')
filee.close()
if __name__ == '__main__':
buildhtml()
from xml.etree import ElementTree
import datetime
def gettestresult():
filename='C:/Users/Pan/Desktop/test/test.xml'
etree = ElementTree.parse(filename)
root = etree.getroot()
#测试结果汇总
resulttotal = {}
resulttotal['ALL'] = root.get('tests')
resulttotal['NG'] = root.get('failures')
resulttotal['Block'] = root.get('errors')
resulttotal['NT'] = root.get('skip')
resulttotal['PASS'] = int(resulttotal['ALL'])-int(resulttotal['NT'])-int(resulttotal['NG'])-int(resulttotal['Block'])
#详细数据
results = []
for testnode in root:
result = {}
result['modulename'] = testnode.get('classname')
result['testcasename'] = testnode.get('name')
result['usetime'] = testnode.get('time')
try:
result['info_type'] = testnode[0].get('type')
result['info_message'] = testnode[0].get('message')
result['info_text'] = testnode[0].text
if testnode[0].tag == 'failure':
result['result'] = '未通过'
elif testnode[0].tag == 'error':
result['result'] = '阻塞'
else:
result['result'] = '未测试'
except:
result['info_type'] = ''
result['info_message'] = ''
result['info_text'] = ''
result['result'] = u'通过'
#通过映射表一一对应
result['taskname'] = ''
results.append(result)
return resulttotal,results
def buildhtml():
filee = open('test.html','w')
#头部
filee.write('''
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>%(title)s</title>
</head>
<body>
'''%({'title':u'TestReport'}))
#测试结果汇总数据表表头
filee.write('''
<br>
<table width="500" border="1">
<tr>
<td>测试时间:</td>
<td colspan="4">%(datetime)s</td>
</tr>
<tr>
<td width="100">用例总数</td>
<td width="100">通过数</td>
<td width="100">失败数</td>
<td width="100">阻塞数</td>
<td width="100">未测试数</td>
</tr>
'''%({'datetime':datetime.datetime.today()}))
#测试结果汇总数据表内容
filee.write('''
<tr>
<td>%(ALL)s</td>
<td>%(PASS)s</td>
<td>%(NG)s</td>
<td>%(Block)s</td>
<td>%(NT)s</td>
</tr>
</table>
'''%(gettestresult()[0]))
#详细数据数据表表头
filee.write('''
<br>
<table width="1350" border="1">
<tr>
<td width="100" rowspan="2">模块</td>
<td width="100" rowspan="2">用例</td>
<td width="100" rowspan="2">耗时</td>
<td width="100" rowspan="2">测试任务</td>
<td width="100" rowspan="2">运行结果</td>
<td colspan="3">备注</td>
</tr>
<tr>
<td width="100">类型</td>
<td width="150">信息</td>
<td width="700">详细说明</td>
</tr>
''')
#详细数据数据表内容
for atestresult in gettestresult()[1]:
filee.write('''
<tr>
<td>%(modulename)s</td>
<td>%(testcasename)s</td>
<td>%(usetime)s</td>
<td>%(taskname)s</td>
<td>%(result)s</td>
<td>%(info_type)s</td>
<td>%(info_message)s</td>
<td>%(info_text)s</td>
</tr>
'''%(atestresult))
#尾部
filee.write('''
</table>
</body>
</html>
''')
filee.close()
if __name__ == '__main__':
buildhtml()
相关文章推荐
- XML形式的配置文件解析框架以及自动代码生成(一)
- 使用该JavaBean可以将数据在JSP页面中以表格的形式显示出来,并具有动态排序、动态生成查询、自动分页功能
- 请求url并返回信息以xml形式显示
- 请问一下在xml注册界面做一个框,并且把代码生成的验证码显示到里面,谢谢了
- 请问一下在xml注册界面做一个框,并且把代码生成的验证码显示到里面,谢谢了
- 运用CodeSmith代码生引擎生成XML报表文件。
- 多线程报表生成其中报表以pdf形式保存
- 利用jasperreports报表生成pdf文档中文不能显示问题解决方法
- 使用Fusion Charts制作报表(dom4j生成XML)
- FH_1Excel报表导入,显示在JSP页面.人为判断后,不正确的数据生成PDF文档
- 用于显示原始XML形式的搜索结果的XSLT
- 【报表】 XSLT 解析普通XML生成表格型XML(三)
- 如何让从数据库中查询出符合条件的记录,然后给每个记录自动加上序号,序号是根据符合条件的记录多少在随时变化.而且也会在以查询生成的报表中显示出来.谢谢
- 润乾报表实现导出excel并将分组的各个类别以目录的形式显示
- Ajax调用.XML文件以表格形式显示的小Demo
- dom4j生成xml显示中文
- 按月生成日历,以datatable形式显示。
- asp.net中利用XML描述文件和Excel模板相结合的方法生成Excel报表
- 结合AnyChart做报表:一个生成AnyChart图形XML数据的工具类
- Altova Xmlspy工具XML文件生成XSD文件并在schema视图中能按树形视图显示