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官网, ...
随机推荐
- 我的Android第三章
先看效果图. 点击之后出变成 按钮内容改变了,并且弹出一个小提示 下面我们就来看看如何实现这个小案例 1)先打开string.xml文件,把要定义的字符串资源放置在里面 2)然后我们要画页面,基本An ...
- 【PC端】jQuery+PHP实现浏览更多内容(jquery.more.js插件)
参数说明: 'amount' : '10', //每次显示记录数 'address' : 'comments.php', //请求后台的地址 'format' : 'json', //数据传输格式 ' ...
- Maven的安装配置
本文主要是针对mac os系统下maven的安装教程. 1.首先验证是否有jdk.java -version,没有需要手工安装 2.maven的下载地址:http://maven.apache.org ...
- 【Web】URI和URL,及URL的编码
URI和URL是什么,以及他们的区别 URL,Uniform Resource Locator,统一资源定位符.用于表示网络上服务器的资源所在位置,比如我们输入浏览器的地址. URI,Uniform ...
- 使用Python调用Flickr API抓取图片数据
Flickr是雅虎旗下的图片分享网站,上面有全世界网友分享的大量精彩图片,被认为是专业的图片网站.其API也很友好,可以实现多种功能.这里我使用了Python调用其API获得了大量的照片数据.需要注意 ...
- css的小技巧
前几天看到<css揭秘>这本书,第一感觉是 css怎么能出这么厚的一本书,不过 细细一想,用好css真的可以实现很多想要的效果,节省很多js代码. 总结几个css的小技巧: 1,将所有元素 ...
- 关于django访问默认后台admin的时候提示403错误,
Forbidden (403) CSRF verification failed. Request aborted. You are seeing this message because this ...
- npm相关
npm list -g --depth 0 : -g 列出所有全局模块,--depth 使列表只列出简略信息,如包名.版本号
- css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?一起来$('.float')
一.抛一块问题砖(display: block)先看现象: 分析HTML代码结构: <div class="outer"> <div class=&quo ...
- github desktop 在线安装失败解决方案
1.问题概述 我的OS是Windows8.1 64位,尝试安装github desktop,始终安装失败:进度到50%左右就炸了.提示说:网络出错.(我100M电信,网络出错?我一直都在上网好吗). ...