一、用来做什么
HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON
脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。
官方中文文档地址:https://cn.httprunner.org/
二、开始使用
1、安装
pip install httprunner 安装
pip install pipenv 安装管理依赖包
2、项目文件结构
测试用例分层结构
cmd到创建文件下目录,执行
hrun --startproject demo 创建一个基本的测试用例分层结构
api文件:存放接口相关信息
testcase:用例存放
testsuites:用例集
reports:测试报告存放地方
debugtalk.py 基础数据定义,这边里可以定义数据,或者写方法来获取,在整个文件中都可以调用里面定义的数据
.env 也是定义数据的一个文件
gitignore git软件要忽略的文件列表
测试用不分层结构,根据项目需要创建文件所有文件都在同一个目录,或者按自己的爱好创建,不推荐这种方式。
3、实践使用
假设有一个登录接口和查询接口,要预先登录后获取到token,然后才能进行查询,找到类似这两个接口的接口文档,或者抓包对应事件看看是否看接口相关信息
api格式:
name: demo api
base_url:base_url
variables:
var1: value1
var2: value2
request:
url: /api/path/$var1
method: POST
headers:
Content-Type: "application/json"
json:
key: $var2
validate:
- eq: ["status_code", 200]
name 和 request 部分是必须的,request 中的描述形式与 requests.request 完全相同。存在变量引用的情况,可在 variables 中对参数进行定义,
默认情况下,har2case 生成用例时,若 HTTP 请求的响应内容为 JSON 格式,则会将第一层级中的所有key-value
转换为 validator。
testcase测试用例:
- config:
name: testcase description
request: base_url: ${gain_base_url()}
variables: {}
- test:
name: /api/get-token
request:
headers:
Content-Type: application/json
User-Agent: python-requests/2.18.4
app_version: 2.8.6
device_sn: FwgRiO7CNA50DSU
os_platform: ios
json:
sign: 9c0c7e51c91ae963c833a4ccbab8d683c4a90c98
method: POST
url: http://127.0.0.1:5000/api/get-token
validate:
- eq: [status_code, 200]
- eq: [headers.Content-Type, application/json]
- eq: [content.success, true]
- eq: [content.token, baNLX1zhFYP11Seb]
config是接口配置部分,test是用例部分,validate是断言部分
加密:
hook 函数的定义放置在项目的 debugtalk.py
中,在 YAML/JSON 中调用 hook 函数仍然是采用 ${func($a, $b)}
的形式。
3、运行
cd 到对应目录下,hrun 对应case文件就行了
# 调试运行 hrun
$ pipenv run python main-debug.py hrun -h
# 调试运行 locusts
$ pipenv run python main-debug.py locusts -h
httprunner、hrun、ate 三个命令完全等价