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官网, ...
随机推荐
- Web Api 简介
ASP.NET Web API 简介 ASP.NET MVC 4 包含了 ASP.NET Web API, 这是一个创建可以连接包括浏览器.移动设备等多种客户端的 Http 服务的新框架, ASP. ...
- 基于东北F4的设计模式情景剧——第一幕 装饰模式(Decorator Pattern)
第一场 难题未解 布景:铁岭,晴天,午后,风.在一幢还算气派的写字楼的三层外墙上,挂着一条红色横幅,上面用歪歪扭扭的毛笔字写着"东北F4软件外包工作室".大风中,那早已褪色的条幅剧 ...
- \r与\n的区别
\r : return 到当前行的最左边. \n: newline 向下移动一行,并不移动左右. Linux中\n表示回车+换行: Windows中\r\n表示回车+换行. Mac中\r表示回车+换行 ...
- webpack详细配置讲解
//常见的Webpack配置文件var webpack = require('webpack');var HtmlWebpackPlugin = require('html-webpack-plugi ...
- T-SQL编程练习(带注释)
use test; GO /*创建自定义函数的格式: * create function 函数名(参数 数据类型) * returns 返回数据类型 as * begin * 代码 * end */ ...
- plist文件
1.一般可以使用属性列表文件存储NSArray或者NSDictionary之类的数据,这种“属性列表文件”的扩展名是plist,因此也称为“plist文件” 2.接下来通过代码来解析Plist文件中的 ...
- Javascript中的队列
队列遵循FIFO (First In First Out)原则. 普通队列 function Queue() { var items=[]; //向队列尾部添加一个或者多个元素 this.enqueu ...
- MAC 设置环境变量path的几种方法
mac 一般使用bash作为默认shell Mac系统的环境变量,加载顺序为:/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.prof ...
- sql server 查询表结构
--查询表结构start SELECT 序号 = a.colorder,字段名称 = a.name,字段描述 = f.value, 标识 then '√' else '' end, 主键 FROM s ...
- JS获取Url中传入的参数
一:后台获取,前台调用 后台: object value= Request.QueryString[key]; 前台js: $(function(){ var value="<%=va ...