python解析robot framework的output.xml,并生成html
一、背景
Jenkins自动构建RF脚本,生成的RF特有HTML报告不能正常打开。
需求:用Python解析测试报告的xml数据,放在普通HTML文件中打开
二、output.xml数据
三、用pyh模块解析stat结点数据(output.py)
#coding=utf-8
'''
Created on 2016年4月12日 @author: cmcc
''' import xml.dom.minidom
import xml.etree.ElementTree #打开xml文档
dom = xml.dom.minidom.parse('output.xml'); root2 = xml.etree.ElementTree.parse('output.xml')
#得到文档元素对象
root = dom.documentElement total = root.getElementsByTagName('total');
total_len = len(total)
tag = root.getElementsByTagName('tag');
tag_len = len(tag)
suite = root.getElementsByTagName('suite');
suite_len = len(suite) #total的stat节点个数
total2 = root2.getiterator("total")
total_stat_num = len(total2[total_len-1].getchildren())
#tag的stat节点个数
tag2 = root2.getiterator("tag")
tag_stat_num = len(tag2[tag_len-1].getchildren())
#suite的stat节点个数
suite2 = root2.getiterator("suite")
suite_stat_num = len(suite2[suite_len-1].getchildren()) statlist = root.getElementsByTagName('stat'); def get_total_statistics():
list = []
for i in range(0,total_stat_num):
d = dict()
d['fail'] = int(statlist[i].getAttribute("fail"))
d['pass'] = int(statlist[i].getAttribute("pass"))
d['total'] = d['fail']+d['pass']
d['text'] = statlist[i].firstChild.data
list.append(d)
#print 'total:'+d['fail']+', '+d['pass']+', '+d['text'] return list
# list = get_total_statistics()
# print list
# print list[0]['fail'] def get_statistics_by_tag():
list = []
for i in range(total_stat_num,total_stat_num+tag_stat_num):
d = dict()
d['fail'] = int(statlist[i].getAttribute("fail"))
d['pass'] = int(statlist[i].getAttribute("pass"))
d['total'] = d['fail']+d['pass']
d['text'] = statlist[i].firstChild.data
list.append(d)
#print 'total:'+d['fail']+', '+d['pass']+', '+d['text'] return list def get_statistics_by_suite():
list = []
for i in range(total_stat_num+tag_stat_num,len(statlist)):
d = dict()
d['fail'] = int(statlist[i].getAttribute("fail"))
d['pass'] = int(statlist[i].getAttribute("pass"))
d['total'] = d['fail']+d['pass']
d['text'] = statlist[i].firstChild.data
list.append(d)
#print 'total:'+d['fail']+', '+d['pass']+', '+d['text'] return list
四、pyh生成带表格的HTML(report.py)
#coding=utf-8
from pyh import *
from msilib.schema import Font
from output import * page = PyH('My wonderful PyH page') page << h2('Total statistics') value = get_total_statistics()
print value mytab = page << table(border='')
mytr = mytab << tr()
mytr << th("Total Statistics",width="",bgcolor="#CCFFCC")+th("total",width="",bgcolor="#CCFFCC")+th("pass",width="",bgcolor="#CCFFCC")+th("fail",width="",bgcolor="#CCFFCC")
for i in range(len(value)):
mytr = mytab << tr()
mytr << td(value[i]['text'])+td(value[i]['total'])+td(value[i]['pass'])+td(value[i]['fail']) value = get_statistics_by_tag()
page << br()
mytab2 = page << table(border='')
mytr = mytab2 << tr()
mytr << th("Statistics by Tag",width="",bgcolor="#CCFFCC")+th("total",width="",bgcolor="#CCFFCC")+th("pass",width="",bgcolor="#CCFFCC")+th("fail",width="",bgcolor="#CCFFCC")
for i in range(1,len(value)):
mytr = mytab2 << tr()
mytr << td(value[i]['text'])+td(value[i]['total'])+td(value[i]['pass'])+td(value[i]['fail']) value = get_statistics_by_suite()
page << br()
mytab3 = page << table(border='')
mytr = mytab3 << tr()
mytr << th("Statistics by Suite",width="",bgcolor="#CCFFCC")+th("total",width="",bgcolor="#CCFFCC")+th("pass",width="",bgcolor="#CCFFCC")+th("fail",width="",bgcolor="#CCFFCC")
for i in range(1,len(value)):
mytr = mytab3 << tr()
mytr << td(value[i]['text'])+td(value[i]['total'])+td(value[i]['pass'])+td(value[i]['fail']) page.printOut('table.html')
五、生成效果
python解析robot framework的output.xml,并生成html的更多相关文章
- 用 Python 写 Robot Framework 测试
Robot Framework 框架是基于 Python 语言开发的,所以,它本质上是 Python 的一个库. 1.你懂 Python 语言. 2.又想使用 Robot Framework 测试框架 ...
- python+request+robot framework接口自动化测试
python+requests实现接口的请求前篇已经介绍,还有不懂或者疑问的可以访问 python+request接口自动化框架 目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出,通过关键字的 ...
- 搭建jenkins+python+selenium+robot framework环境
1.安装jenkins 具体参考:https://www.cnblogs.com/dydxw/p/10538103.html 2.下载插件 我是为了方便,把有关python.selenium.robo ...
- Robot Framework操作
Robot Framework 介绍 RobotFramework是一款基于python的开源自动化测试框架,遵守Apache License 2.0协议,在此协议下所有人都可以免费开发和使用.因为R ...
- Robot Framework自动化测试(七)--- jybot模式
虽然,很久不用关于Robot Framework框架了,但我这里应该是除了@齐涛-道长之外分享Robot Framework 相关资料比较多的地方了.所以,常常被问到一些关于该框架的问题. 虽然,我一 ...
- Robot Framework安装
Robot Framework(中文站/社交化知识社区,源码)是一款Python编写的通用开源功能测试自动化框架,以作验收测试和验收测试驱动开发(ATDD),它是一种使用表格测试数据语法的关键字驱动的 ...
- Robot Framework 使用1-环境配置及简单网站兼容性测试(转)
0.Robot Framework 简介 Robot Framework 是一个通用的自动化测试框架,主要用于“验收测试”和“验收测试驱动开发(ATDD)” (会其它文章中会详细介绍ATDD).它使用 ...
- 最新 robot framework安装
相信大家对robot framework并不陌生,它是一个基于Python语言,用于验收测试和验收测试驱动开发(ATDD)的通用测试自动化框架=,提供了一套特定的语法,并且有非常丰富的测试库. Pyt ...
- Robot Framework 教程 (5) - 连接Oracel数据库
Robot Framework 提供了多种Library.其中Database Library可用来连接操作数据库. 1.安装Database Library 打开Robot Framework官网, ...
随机推荐
- DP专题训练之HDU 1864 最大报销额
做DP一定要注意数组的大小,嗯,就是这样~ Description 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过10 ...
- 《编写可维护的JavaScript》——JavaScript编码规范(五)
语句和表达式 在JavaScript中,诸如if和for之类的语句有两种写法,使用花括号的多行代码或者不使用花括号的单行代码.比如: //不好的写法,尽管这是合法的JavaScript代码 if (c ...
- gulp编译sass
前言:前段时间学习了sass语法,但是一直用的是"考拉"这个软件工具将我写的sass代码编译成css,然后再引用到项目里面去的,随着对sass的更加深入的了解,我开始尝试着将sas ...
- 三分钟学会funsioncharts
由于项目需求需要做一个报表,选择FusionCharts作为工具使用.由于以前没有接触过报表,网上也没有比较详细的fusionCharts教程,所以决定好好研究FusionCharts,同时做一个比较 ...
- vs快捷键大全
前言 作为一个.net开发员,你还在用鼠标去点击相应的操作么?如果你回答是,那么你太low了! 一个很厉害的程序员不会是那种这鼠标到处狂点的人,他们肯定会很多快捷键,所以为了离他们更近一步,我们必须学 ...
- jquery 获取元素背景图片backgroungImage的url
$("#").css("backgroundImage").replace('url(','').replace(')','');
- GUI 下
11.6 Swing组件 JButton JLabel JTextField JTextArea JTable JTree publicclass JTableDemo extends JFrame ...
- windows server 2012 r2 远程桌面连接指南
具体详情请阅览文档 http://pan.baidu.com/s/1jHTCpW6 windows server 2012 r2 远程桌面连接指南 - 作者 rick·bao - 日期 2016-0 ...
- Openlayers自定义简单popup
OpenLayers中可以使用很多种类型的popup,大家可以到Openlayers的 popupMatrix.html示例中看.之前存在这样一个错误的想法:popup和marker是绑定的,要有po ...
- pinpoint 安装部署
.markdown-preview:not([data-use-github-style]) { padding: 2em; font-size: 1.2em; color: rgb(171, 178 ...