作者:M-G思维_891 | 来源:互联网 | 2023-10-12 10:42
目前在开发通用接口平台,已经完成参数引擎,内置函数引擎,执行引擎,API抽离等工作,突然发现了httprunner这个优秀的开源APItest框架,初步研究发现httprunner各方面都很优秀,
目前在开发通用接口平台,已经完成参数引擎,内置函数引擎,执行引擎,API抽离等工作,突然发现了httprunner这个优秀的开源APItest框架,初步研究发现httprunner各方面都很优秀,遂进一步考虑是否将通用接口平台执行后台迁移至httprunner,经过多日的研究我发现了一个很不友好的地方。
根据文章《HttpRunner 的测试用例分层机制》,文中介绍用例分层,API抽离其中有句话是这样说的:“API接口定义必须放置在 api
目录下”,这样的话如果我们web的数据存储在MySQL中的话,无法实现这一点,那么在调用API就会提示报错未知定义的API,如果数据存储在yaml文件中,并应用httprunner的脚手架机制生产相应的目录结构,那么这样的web化根本是无用的,只适合一个人自己玩,根本不具有web化的意义(共享即是正义)。
基于这点,我放弃迁移web执行后台至httprunner的想法,继续自行开发批量执行及报告生成模块。
下面也分享一下我学习httprunner的所得吧。
1、安装
windows安装方法,直接pip安装;也可以去github下载压缩包解压后源码安装,不多说了
2、知识介绍
在httprunner中,测试用例引擎最大的特色就是支持 YAML/JSON
格式的用例描述形式,也就是说你可以用编辑YAML的方式来编写接口自动化脚本,如下代码
文件名称:xxxx.yml
- config:
name: demo
variable_binds:
- UserName: test001
- Password: 123456
request:
base_url: http://xxx.debugtalk.com
headers:
Accept: application/json
User-Agent: iOS/10.3
- test:
name: regist user which passwd is wrong
request:
url: http://m.aicai.com/m/saveSimpleRegister.do?agentId=14759&vt=5
method: POST
headers:
User-Agent: 'iOS/10.3'
token: content.token
json:
account: "postsay1"
password: "%^&*()"
phone: "13751077575"
isProtocol: on
ajaxReq: 1
validate:
- {"check": "status_code", "comparator": "eq", "expect": 200}
- {"check": "content.status", "comparator": "eq", "expect": error}
- {"check": "content.msg", "comparator": "str_eq", "expect": xlkhslhdfklsdlfh}
- eq: ["status_code" , 200]
- eq: ["content.status" , error]
- eq: ["content.msg" ,xhixvjkdjfljsdf]
代码释义:config 为当前case的配置项标志,从代码中也可以看到,可以包括参数等信息;
test为API标志,包含API信息以及断言信息
ps:不懂YAML的童鞋请自行学习其他资料
执行时在yml文件夹所在目录的cmd中输入 httprunner xxxx.yml 即可。
可以看到执行结束,有报告生成,如下图
这样就完成了一个简单接口自动化脚本的编写和执行以及报告的生成,极大的简化了接口自动化的难度,你无需接触Python requests unittest 等代码,事实上httprunner的底层就是那些东西,用约定格式的YAML文件传入数据,httprunner在底层处理数据,发送请求,校验对比结果,生成报告,就酱子。
其他呢,httprunner还提供了脚手架机制,一键生成httprunner的项目结构,提供抽离API机制 等等,到我发现无法web化后,遂放弃,因为老夫也会写网络爬虫哟,还是自己写后台吧。
如果你想使用httprunner做接口自动化,建议去看说明文档,ok,就酱紫吧。