基础概要
1、概要
HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型。简单易用,功能强大,具有丰富的插件化机制和高度的可扩展能力。
- V3的最新版本
3.1.11
- V2的最新版本
2.5.9
2、核心特性
- 多格式可选:测试用例支持
YAML/JSON/go test/pytest
格式,并且支持格式互相转换 - 双执行引擎:同时支持
golang/python
两个执行引擎,兼具 go 的高性能和的丰富生态 - 录制 & 生成:可使用
/Postman/Swagger/curl
等生成测试用例;基于链式调用的方法提示也可快速编写测试用例 - 复杂场景:基于
variables/extract/validate/hooks
机制可以方便地创建任意复杂的测试场景 - 插件化机制:内置丰富的函数库,同时可以基于主流编程语言(
go/python/java
)编写自定义函数轻松实现更多能力 - 性能测试:无需额外工作即可实现压力测试;单机可轻松支撑
1w+VUM
,结合分布式负载能力可实现海量发压 - 网络性能采集:在场景化接口测试的基础上,可额外采集网络链路性能指标(
DNS
解析、TCP
连接、SSL
握手、网络传输等) - 一键部署:采用二进制命令行工具分发,无需环境依赖,一条命令即可在
macOS/Linux/Windows
快速完成安装部署
3、核心概念
3.1测试用例
- 测试用例应该是完整且独立的,每条测试用例应该是都可以独立运行的
- 在 HttpRunner 中,每个
YAML/JSON/pytest/go test
文件对应一条测试用例 - HttpRunner 以
TestCase
为核心,将任意测试场景抽象为有序步骤的集合
3.2插件机制
- Golang plugin over gRPC:Go 代码编写,要求编译为
debugtalk.bin
文件 - Golang plugin over net/rpc:Go 代码编写,要求编译为
debugtalk.bin
文件 - Python plugin over gRPC:Python 代码编写,无需编译,要求命名为
debugtalk.py
文件 - Golang official plugin:Go 代码编写,要求编译为
debugtalk.so
文件
3.3 目录结构
-
项目根目录
基于约定大于配置的思路,HttpRunner 通过定位插件文件的位置来确定项目的根目录,以此作为相对路径的基准,同时,定位插件文件存在优先级:
1、debugtalk.bin
2、debugtalk.py
3、debugtalk.so -
简单了解下变量,后面编写用例的博客有详细实例
https://httprunner.com/docs/user-guide/enhance-tests/variables/
-
函数约定通过 ${} 的形式来调用插件函数:
"${func{$a, $b}}"
3.4、支持的开发语言
3.4.1 文本形态
- json 跟V2.X基本一致
- yaml 跟V2.X基本一致
3.4.2 代码形态
- pytest 完整支持
pytest
格式的脚本,体验上和V3.X
基本一样 - go test HttpRunner v4.0 不需要用户具有 Golang 基础,专业性能测试,最好选择golang语言,单机发压性能(QPS)可以达到 2w 以上,这是 Python 插件远远无法达到的。
3.5、版本对比
在使用体验和用例格式兼容性方面,v4
也会与之前的 v2/v3/
通过·hrp·命令做到兼容,因此后续 HttpRunner 的维护工作都将转到 v4 版本,之前的版本将不再单独维护。
4、命令行工具
hrp startproject
- 创建一个脚手架项目hrp pytest
- 使用 pytest 运行 API 测试hrp run
- 使用 go 引擎运行 API 测试hrp convert
- 转换为 JSON/YAML/gotest/pytest 测试用例hrp boom
- 使用 boomer 运行负载测试hrp build
- 用于测试的构建插件