接口测试工具-HTTPrunner简介

作者: 西瓜加糖 | 来源:发表于2018-11-29 14:09 被阅读2次


背景

各个项目的测试小组使用的接口测试工具大部分都是Jmeter,最近要求扩展下技能池,也让大家多个选择,就让我研究了一下HTTPrunner与Rest-assured,关于这两个工具,可能网上资料不多,就记录下学习结果,此篇是关于HTTPrunner的。


简介

HTTPrunner是一款面向HTTP(s)协议的通用测试框架,只需要维护一份yml/json脚本,就能实现自动化测试,性能测试,线上监控,持续集成等多种测试需求。


测试用例组织

测试用例集(testsuite):对应一个文件夹,包含单个或多个测试用例文件(yaml/json)

测试用例(testcase):对应一个 YAML/JSON 文件,包含单个或多个测试步骤

测试步骤(teststep):对应 YAML/JSON 文件中的一个 test,描述单次接口测试的全部内容,包括发起接口请求、解析响应结果、校验结果等


环境与安装

推荐环境:macOS/Linux/Windows+Python 3.6

安装方式:pip install httprunner


命令


hrun = httprunner = ate : 核心命令,用于运行用例

常用命令:

hrun test.json

hrun test.yml

hrun test.json --log-level debug

hrun test.json --html-report-name

har2case: 将HAR 格式转换为YAML/JSON格式的用例

常用命令:

har2case test.har

har2case test.har test.yml

locusts: 基于 Locust 实现性能测试

常用命令:

locusts -f test.json


测试流程

抓包

使用Fiddler抓包,获取.har文件

转换格式

har2case demo_car.har

har2case demo_car.har    demo_car.yml

运行用例

hrun demo_car.json

查看报告

执行路径的 reports 目录下生成一份 HTML 格式的测试报告


调试优化

断言

可对Response的各项进行校验: status_code、header、contents…

比较方法:

eq:实际 = 期望

ne:实际 =! 期望

contains:实际包含期望

contained_by:期望包含实际

例如:

"validate":[

    {"eq":["status_code",200]}

]

参数关联

提取前一个test的response中的参数,用于下一个test

方法:

参数提取(extract)

"extract":[{"token":"content.token"}]

参数引用($var)

"headers":{"token":"$token",

"Content-Type":"application/json"}

公共配置全局化

test中公共的部分可以放到全局配置模块(config)中

方法:提取两个test都存在的

"config":{

    "headers":{

        "User-Agent":"python-requests/2.18.4""Content-Type":"application/json"}

变量

变量可在config(全局)与test(局部)中使用

变量:

"variables": [

                {"user_agent": "iOS/10.3"}

引用:

"headers": {

                    "user_agent": "$user_agent"}

函数

同级或其父级目录中创建一个 debugtalk.py

文件,然后在其中定义相关的函数

方法:函数调用${func($var)}

数据驱动

同一个用例跑不同的参数(用户)

方法:参数化(parameters)

"config":{"parameters":[{"user_id":[1001,1002,1003,1004]}]}

HOOK机制

请求前和请求后调用函数,相当于用例的前置与后置

功能:

用例层面(config)

步骤层面(test)

setup_hooks:自定义函数、

$request加工

teardown_hooks:

自定义函数、

$response加工、

$response修改

方法:

同级或其父级目录的 debugtalk.py 文件定义一个函数用于执行用例完成后,解析报告获取汇总结果,此处可以使用BeautifulSoap

在config增加teardown_hooks,调用所需的函数


总结与Rest-assured对比

个人感觉,HTTPrunner可以应用于一些简单的接口测试,或者是不会有大改动的接口的回归测试,这样也挺方便的,因为就只是导出har然后转换就可以执行。通常的接口测试还是建议使用Jmeter,关于Jmeter的使用可以参考《Jmeter性能测试流程

参考资料:https://cn.httprunner.org/

相关文章

网友评论

    本文标题:接口测试工具-HTTPrunner简介

    本文链接:https://www.haomeiwen.com/subject/xhffcqtx.html