一、背景

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的更多相关文章

  1. 用 Python 写 Robot Framework 测试

    Robot Framework 框架是基于 Python 语言开发的,所以,它本质上是 Python 的一个库. 1.你懂 Python 语言. 2.又想使用 Robot Framework 测试框架 ...

  2. python+request+robot framework接口自动化测试

    python+requests实现接口的请求前篇已经介绍,还有不懂或者疑问的可以访问 python+request接口自动化框架 目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出,通过关键字的 ...

  3. 搭建jenkins+python+selenium+robot framework环境

    1.安装jenkins 具体参考:https://www.cnblogs.com/dydxw/p/10538103.html 2.下载插件 我是为了方便,把有关python.selenium.robo ...

  4. Robot Framework操作

    Robot Framework 介绍 RobotFramework是一款基于python的开源自动化测试框架,遵守Apache License 2.0协议,在此协议下所有人都可以免费开发和使用.因为R ...

  5. Robot Framework自动化测试(七)--- jybot模式

    虽然,很久不用关于Robot Framework框架了,但我这里应该是除了@齐涛-道长之外分享Robot Framework 相关资料比较多的地方了.所以,常常被问到一些关于该框架的问题. 虽然,我一 ...

  6. Robot Framework安装

    Robot Framework(中文站/社交化知识社区,源码)是一款Python编写的通用开源功能测试自动化框架,以作验收测试和验收测试驱动开发(ATDD),它是一种使用表格测试数据语法的关键字驱动的 ...

  7. Robot Framework 使用1-环境配置及简单网站兼容性测试(转)

    0.Robot Framework 简介 Robot Framework 是一个通用的自动化测试框架,主要用于“验收测试”和“验收测试驱动开发(ATDD)” (会其它文章中会详细介绍ATDD).它使用 ...

  8. 最新 robot framework安装

    相信大家对robot framework并不陌生,它是一个基于Python语言,用于验收测试和验收测试驱动开发(ATDD)的通用测试自动化框架=,提供了一套特定的语法,并且有非常丰富的测试库. Pyt ...

  9. Robot Framework 教程 (5) - 连接Oracel数据库

    Robot Framework 提供了多种Library.其中Database Library可用来连接操作数据库. 1.安装Database Library 打开Robot Framework官网, ...

随机推荐

  1. DP专题训练之HDU 1864 最大报销额

    做DP一定要注意数组的大小,嗯,就是这样~ Description 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过10 ...

  2. 《编写可维护的JavaScript》——JavaScript编码规范(五)

    语句和表达式 在JavaScript中,诸如if和for之类的语句有两种写法,使用花括号的多行代码或者不使用花括号的单行代码.比如: //不好的写法,尽管这是合法的JavaScript代码 if (c ...

  3. gulp编译sass

    前言:前段时间学习了sass语法,但是一直用的是"考拉"这个软件工具将我写的sass代码编译成css,然后再引用到项目里面去的,随着对sass的更加深入的了解,我开始尝试着将sas ...

  4. 三分钟学会funsioncharts

    由于项目需求需要做一个报表,选择FusionCharts作为工具使用.由于以前没有接触过报表,网上也没有比较详细的fusionCharts教程,所以决定好好研究FusionCharts,同时做一个比较 ...

  5. vs快捷键大全

    前言 作为一个.net开发员,你还在用鼠标去点击相应的操作么?如果你回答是,那么你太low了! 一个很厉害的程序员不会是那种这鼠标到处狂点的人,他们肯定会很多快捷键,所以为了离他们更近一步,我们必须学 ...

  6. jquery 获取元素背景图片backgroungImage的url

    $("#").css("backgroundImage").replace('url(','').replace(')','');

  7. GUI 下

    11.6 Swing组件 JButton JLabel JTextField JTextArea JTable JTree publicclass JTableDemo extends JFrame ...

  8. windows server 2012 r2 远程桌面连接指南

    具体详情请阅览文档  http://pan.baidu.com/s/1jHTCpW6 windows server 2012 r2 远程桌面连接指南 - 作者 rick·bao - 日期 2016-0 ...

  9. Openlayers自定义简单popup

    OpenLayers中可以使用很多种类型的popup,大家可以到Openlayers的 popupMatrix.html示例中看.之前存在这样一个错误的想法:popup和marker是绑定的,要有po ...

  10. pinpoint 安装部署

    .markdown-preview:not([data-use-github-style]) { padding: 2em; font-size: 1.2em; color: rgb(171, 178 ...