一 前言
在性能测试框架开发中,需要将场景执行完成后的测试报告进行处理,汇总报告中关注的性能指标数据,然后写入报告并邮件发送相关人员。因而,其中一个环节就是,如何从测试报告中抓取关心的各个指标数据(如,tps,响应时间,并发用户数等)?
二 问题分析
LR生成测试报告时会将报告数据保存到目录,目录里有类似各个指标的汇总结果,如下图所示。但,如果想通过解析该html获取各个指标数据,这个想法会让你失望的!因为分析该html源码发现,指标数据其实并不在该页面,而是在该页面的定义的frameset。通俗的讲,就是一个页面嵌套另外的页面,实际数据要通过访问内嵌页面获得。熟悉selenium的同学,一定清楚这类情况,毕竟想要定位其中的元素,首先要做的操作就是switch_to_frame嘛。此处不多扯,后续会出selenium相关的系列文章。
三 解决思路
经过对html源码分析,可以发现每个指标数据对应存储在Report目录下的一个html文件,只要使用python的html解析技术获取到,然后对数据稍加修改,增加一些标签形式html格式的字符串,最后写入到.html的文件即可。
四 Python html解析技术总结
Python是非常擅长解析html的,方法众多,归纳以下几种:
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
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。