搜索
您的当前位置:首页正文

接口测试工具-HTTPrunner简介

来源:二三娱乐


背景

各个项目的测试小组使用的接口测试工具大部分都是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


命令


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对比

Top