HttpRunner
HttpRunner简介
HttpRunner 是一个支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议的开源的通用测试框架,涵盖接口测试、性能测试、数字体验监测等测试类型。用户通过编写YAML或JSON文档即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求,该API 测试工具简单易用,功能强大,具有丰富的插件化机制和高度的可扩展能力。
HttpRunner的特征:
- 支持与 HAR/Postman/Swagger/Curl/JMeter 等工具对接,可使用 HAR/Postman/Swagger/curl 等生成测试用例,轻松实现用例生成和转换
- 测试用例支持 YAML/JSON/go test/pytest 格式,可通过录制的方式快速生成用例,上手简单,使用方便,并且支持格式互相转换
- 支持灵活的自定义函数和 hook 机制,参数变量、数据驱动、结果断言等机制一应俱全,轻松适应各种复杂场景
HttpRunner框架优点:
-
继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求
-
编写YAML或JSON格式的testcase,转译成pytestcase来运行测试
-
使用变量/提取/验证/钩子机制,创建case和复用case
-
重写pytest,可以利用pytest的各种插件
-
使用allure项目生成功能丰富的报告
-
使用jmespath,提取和验证json响应变得前所未有的简单。
-
基于 HAR 实现接口录制和用例生成功能(har2case)
HttpRunner框架运行原理:
HttpRunner 会把json、yml格式的case转换成pytest用例,再使用重写的类来执行测试
HttpRunner版本对比
目前HttpRunner 已经进入到 v4.x 版本了,使用率较广的版本是HttpRunner2.x和HttpRunner3.x,每一个大版本实现思路和命令上都具有显著的差异
版本 | v1 | v2 | v3 | HttpRunner+ | v4 |
---|---|---|---|---|---|
发布时间 | 2018.03.07 | 2019.01.01 | 2020.03.10 | 2021.11.18 | 2022.05.01 |
开发语言 | Python | Python | Python | Golang | Golang + Python |
网络协议 | HTTP(S)/1.1 | HTTP(S)/1.1 | HTTP(S)/1.1 | HTTP(S)/1.1 | 多协议 HTTP(S)/HTTP2/WebSocket/TCP/RPC |
脚本格式类型 | YAML/JSON | YAML/JSON | YAML/JSON/pytest | YAML/JSON | YAML/JSON/pytest/gotest |
脚本格式校验 | ❌ | jsonschema | ❌ | ❌ | TODO |
脚本编写语法提示 | ❌ | ❌ | pytest 链式调用 | gotest 链式调用 | gotest 链式调用 + pytest 链式调用 |
脚本执行引擎 | Python unittest | Python unittest | Python pytest | Go 自研 | Go 自研 + Python pytest |
插件化语言(debugtalk.xx) | Python | Python | Python | 多语言(Go/Python) | 多语言(Go/Python/Java/etc) |
参数提取机制 | regex + 点分隔符 | jmespath + regex + 点分隔符 | jmespath | jmespath + regex | jmespath + regex |
skip 机制 | ✅ | ❌ | ❌ | ❌ | TODO |
接口测试报告 | html 自研(jinja2) | html 自研(jinja2) | pytest-html/allure | html 自研(Go template) | html 自研(Go template) + pytest-html/allure(待实现) |
运行环境依赖 | Python 2.7/3.3+ | Python 2.7/3.5+ | Python 3.7+ pytest | 无需依赖 | Go 引擎无需依赖 pytest 引擎依赖 Python 3.7+ |
注:v4 中 斜体 代表当前还未支持,但计划会实现
HttpRunner v4.0 同时采用了 Golang/Python 两种编程语言,底层会有两套相对独立的执行引擎,目标是兼具 Golang 的高性能和 pytest 的丰富生态。
关键差异点对比如下:
引擎 | Go | Python |
---|---|---|
脚本类型 | YAML/JSON/gotest | YAML/JSON/pytest |
网络协议 | 多协议 HTTP(S)/HTTP2/WebSocket/TCP/RPC | HTTP(S) |
脚手架工具 | hrp startproject | / |
用例生成工具 | hrp har2case | / |
脚本转换工具 | hrp convert | / |
插件化语言 | 多语言(Go/Python/Java/etc.) | Python |
运行环境依赖 | 与插件语言相关,详见依赖环境说明 | Python 3.7+ |
脚本编写语法提示 | gotest 链式调用 | pytest 链式调用 |
运行接口测试 | hrp run | hrp pytest |
运行性能测试 | hrp boom | / |
网络性能采集 | hrp run –http-stat | / |
接口测试报告 | html 自研(Go template) | pytest-html/allure |