暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【HttpRunner】接口自动化框架HttpRunner实践

ERGOisTESTING 2019-05-13
901

【背景】

    上次用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文件即可,后文预定

↓↓扫一扫,防脱发↓↓

文章转载自ERGOisTESTING,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论