一 前言html
在性能测试框架开发中,须要将场景执行完成后的测试报告进行处理,汇总报告中关注的性能指标数据,而后写入报告并邮件发送相关人员。于是,其中一个环节就是,如何从测试报告中抓取关心的各个指标数据(如,tps,响应时间,并发用户数等)?python
二 问题分析web
LR生成测试报告时会将报告数据保存到目录,目录里有相似各个指标的汇总结果,以下图所示。但,若是想经过解析该html获取各个指标数据,这个想法会让你失望的!由于分析该html源码发现,指标数据其实并不在该页面,而是在该页面的定义的frameset。通俗的讲,就是一个页面嵌套另外的页面,实际数据要经过访问内嵌页面得到。熟悉selenium的同窗,必定清楚这类状况,毕竟想要定位其中的元素,首先要作的操做就是switch_to_frame嘛。此处很少扯,后续会出selenium相关的系列文章。正则表达式
三 解决思路并发
通过对html源码分析,能够发现每一个指标数据对应存储在Report目录下的一个html文件,只要使用python的html解析技术获取到,而后对数据稍加修改,增长一些标签形式html格式的字符串,最后写入到.html的文件便可。app
四 Python html解析技术总结框架
Python是很是擅长解析html的,方法众多,概括如下几种:ide
1. lxml.html源码分析
2. BeautifulSoup性能
3. SGMLParser
4. HTMLParaer
5. Requests-HTML
6. 正则表达式
在本次实现中,采用的是 BeautifulSoup,一款用于从HTML或XML文件中提取数据的Python库,API清晰、简洁。其中,lr报告中的表格样式和获取表格数据的代码分别以下:
lr报告的样式表格
部分代码以下:
五 实现效果
最后,分析场景执行结果,提取TPS、响应时间,并发用户数等指标数据,并生成汇总报告的样式以下:
其余资源:
python入门课程:http://i.youku.com/weiworld521