一、前言
又又又到了讲httprunner框架的时候,作为测试界的后起之秀,从其开源默默无闻到家喻户晓,从线上教育机构拿来做噱头到作者在工作中实战应用,就单单它不同的版本支持不同的测试框架,它就值得再一次被解说。尽管这个系列作者已经写过10来篇,其中用法介绍相差不大,但是在整个接口自动化测试框架中没有篇幅,或者叫推荐,那么它又是测试界的新宠儿,不仅是在接口测试方面;还能做接口性能测试,它在测试界应该占有一席之地。
二、HttpRunner介绍
附上github地址,这是开源的免费项目,已经发展到v3.x版本了,unittest进阶pytest框架;可以算是非常优化了。
另附httprunner3.x官方文档地址,本章内容所有的技术点都源自于此;或许一些疑问也应该由此提出;它能做为接口自动化测试的解决方案吗?
- 无论是浏览github还是阅读官方文档,它的描述都不是工具而是框架;没错,它集成了requests、pytest、locust、allure等等诸多工具或者框架、插件,是集大成者。
2.1、如何安装
支持python3.6及以上版本,pip install httprunner,如此默认是安装最新版本;本篇就以最新版本做演示。
如果想去低版本,可以指定安装版本:pip install httprunner==2.4.3;更多安装办法请参考官方文档。
- 验证安装版本是否成功,cmd–>httprunner -V
C:\Users\xxxxx>httprunner -V
3.1.6
2.2、如何使用
记住一点,咱们在选择用什么样的工具做接口测试的时候,往往优先考虑它的使用规则,是简单还是复杂,是容易上手还是需要更高学习成本?很幸运,它是简单易学的,这要归功于它的录制功能(事实证明:如果一个优秀的工具少了录制功能,咱们也会对它少了些兴趣),通过抓包工具fiddler/charles导出har数据文件,再通过har2case(-2y/-2j)转换成yaml/json格式的测试用例,最后hrun执行脚本;这样就可以完成简单的线性脚本(场景化接口测试)。
- 录制功能,选择自己熟练的工具,作者优先charles
- 设置手机或浏览器代理,教程略,可自行百度搜索
- 开始抓包(录制),导出har文件,存放于指定位置
- cmd命令进入har文件位置,har2case xxx.har会在当前路径下默认生成xxx_test.py文件
C:\Users\xxxxx>testcase\dir
xxxxxx xxxx xxx xxx.har
C:\Users\xxxxx>testcase\har2case xxx.har
C:\Users\xxxxx>testcase\dir
xxxxxx xxxx xxx xxx.har
xxxxxx xxxx xxx xxx_test.py
# 默认py,har2case -2y 参数可以生成yaml格式
C:\Users\xxxxx>testcase\har2case -2y xxx.har
C:\Users\xxxxx>testcase\dir
xxxxxx xxxx xxx xxx.har
xxxxxx xxxx xxx xxx_test.py
xxxxxx xxxx xxx xxx.yml
# har2case -2j 参数可以生成json格式
C:\Users\xxxxx>testcase\har2case -2j xxx.har
C:\Users\xxxxx>testcase\dir
xxxxxx xxxx xxx xxx.har
xxxxxx xxxx xxx xxx_test.py
xxxxxx xxxx xxx xxx.yml
xxxxxx xxxx xxx xxx.json
- 执行用例文件:hrun xxx.json,会在当前目录生成reports报告目录/xxx.html
C:\Users\xxxxx>testcase\hrun xxx.json --html=reports/report.html
C:\Users\xxxxx>testcase\dir
xxxxxx xxxx <DIR> reports
xxxxxx xxxx xxx xxx.har
xxxxxx xxxx xxx xxx_test.py
xxxxxx xxxx xxx xxx.yml
xxxxxx xxxx xxx xxx.json
- 查看报告,进入reports目录双击report.html报告
- 这个报告相对较丑,再看看美丽的一面,不过需要多做两件事情:pip安装allure-pytest插件和安装allure
C:\Users\xxxxx>testcase\ pip install allure-pytest
C:\Users\xxxxx>testcase\ hrun xxx.json --alluredir=reports/allure-results
C:\Users\xxxxx>testcase\ allure serve reports/allure-results
- allure serve会生成报告,并且自动打开浏览器:
三、小结
在使用过程中,熟练度肯定不如之前写的httprunner2.x版本,然而hrun/har2case -h所支持的参数列表多少也发生了变化,故而导致使用感觉陌生了点,既然它提供了帮助文档,咱们就应该能用最少的时间来适应它。
关于测试用例的格式,json或者yml,首先推荐yml,因为它能在文件中写注释,就单单这点就够了,虽然格式美化后的json会比yml可读性更高写,但是耐不住yml的运用会比json广。
关于api、测试用例、测试套件的使用,在当前最新版本可能已经不存在这个概念了,所以需要稍微多的时间从个人感觉HttpRunner2.x版本转变过来;个人感觉HttpRunner2.x版本已经可以满足日常测试需求了。
四、扩展
像jmeter都有模版快速创建测试计划,httprunner也不例外有快速创建工程结构
- httprunner -h , 查看帮助文档,httprunner框架支持hrun、har2case、startproject、make操作;
- 其中startproject参数就能满足快速创建工程的需求
- 而make可以将json/yml格式的用例数据转成py测试用例;和hrun直接运行xxx.har一样
4.1、回到刚开始的问题
HttpRunner能作为接口自动化测试的解决方案吗?
- 答案是肯定的,作者当前应用就是通过录制,按模块或者业务功能操作app,分不同场景和业务进行组织测试用例,最后与jenkins集成,通过定时构建触发执行测试,按条件决定是否发送邮件、钉钉、企业微信消息通知。