【背景】
上次用jmeter写完整个项目后才想起来基本请求可以用badboy录制直接生成,还很开心的说可以复制json格式请求真方便(宛如制杖)。说起录制,支持用抓包结果导出基本请求直接使用的HttpRunner框架似乎在便捷度上更上一层楼。
来瞧一瞧~

相关文章:《【JMETER】接口自动化测试案例一则》
【正文】
一、环境准备
1、python环境与pip安装
略
2、安装httprunner
pip install httprunner
3、确认安装完成
hrun -V
har2case -V

二、基本操作流程
1、使用Charles抓包并导出har文件
(相当于录制功能了)


2、将导出的har文件转成json文件
在cmd中运行 har2case xxxx.har,默认转化成.json文件。


(转成yaml格式也行,har2case xxxx.har -2y)


可以看出json文件和yaml文件格式都很简单清晰,如果不采用Charles录制,按这种格式以场景或者冒烟的形式自己写写也方便。
3、执行测试
cmd中运行 hrun ESSEN_login.json

4、生成报告
这份报告中登录涉及的后面两个请求权限接口失败了。原因是因为提交的csrf_token值是录制时的那个值,新一次登录已经随机生成了新的值,应该取用新值。这也是后面要提到的优化阶段。

这个报告只有一个html文件,界面看着也舒服,还可以看每个接口的请求响应信息以及失败 报错日志。


三、其他
1、关于校验
har2case转换后的json文件自动生成了validate部分的内容,包含了http状态码,各json节点等等断言。通用接口几乎不需要另外再修改,除了特殊的一些请求需要自己加点校验项进去。
这是框架在后台做了大量工作,使得基础工作量大大减少。与之相比,用JMeter做接口自动化在此方面完全弱势。

2、关于参数化
①获取其他接口的返回值入参,即缓存参数
以上面的基本操作流程为案例,我们需要将login.do接口返回的csrf_token的值保存为参数,在请求权限的两个参数中发出。
"extract":[{"参数名":"参数值"}],这是保存要用的参数,json的语法,yaml的更简洁extract:参数名:参数值

$参数名直接引用

来看下运行效果,全部通过了。

②直接定义变量
在config中直接写,比如登录用户密码,引用方法跟上面一样 $参数名


③从CSV文件中读取参数并使用
略。还有②中定义参数列表的举例也略(懒)了。
3、保存测试过程中的数据
hrun xxxx.json --save-tests
在当前目录下生成log文件夹及相关日志文件。


4、创建项目
hrun --startproject 项目名称


4、调用函数
定义函数:在debugtalk.py中定义函数A(n)
调用函数:在json用例中调用函数${A(1)}
示例略(懒)。
【结语 】
基于python的测试框架,有个很明显的优点,就是报告漂亮。而httprunner又能借助Charles直接抓包录制并断言,仅需维护少量json数据, 操作便利。实属颜值党+懒人党的福利。
此外,httprunner还提供了基于locust的性能测试,直接运行json文件即可,后文预定

↓↓扫一扫,防脱发↓↓





