news 2026/5/1 11:05:08

接口测试利器 HttpRunner 全面解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
接口测试利器 HttpRunner 全面解析

HttpRunner 是一款面向测试开发的开源接口自动化测试框架,支持 YAML/JSON/Python 编写测试用例,支持 CLI 和 Python 代码运行,兼容多种主流工具(如 Allure、Jenkins 等),非常适合自动化测试团队使用。

随着微服务、前后端分离架构的普及,接口自动化测试 在软件测试领域变得越来越重要。市面上有诸多接口测试工具和框架可供选择,而其中一款国产开源、功能强大的工具——HttpRunner,因其脚本简单、功能完善、适合 CI/CD 接入等优势,广受国内测试工程师欢迎。

一、HttpRunner 简介

HttpRunner 是一个功能强大、易于使用的开源接口测试框架,支持 HTTP(S)、WebSocket 协议,兼容 API 测试和性能测试,适合各种测试场景:

它的设计理念是“测试即代码,代码即测试”,不仅适合功能测试,也非常适合接口自动化开发。

官方地址:

二、与其他接口测试工具对比
工具/框架脚本语言主要特点适合人群
HttpRunnerYAML / Python开箱即用,支持 DSL+Python,国产文档全,支持 CI/CD自动化测试工程师
Postman + NewmanJSON操作简洁,适合接口调试,支持环境变量,命令行执行接口初学者 / 手工测试
JMeterXML / GUI支持接口和性能测试,脚本笨重,适合场景化压测性能测试工程师
Pytest + requestsPython灵活强大,适合高度自定义场景,但脚手架需自己搭建开发测试工程师
RestAssuredJavaJava生态下的接口测试框架,代码结构规范,语法较重Java团队

HttpRunner 是一种中间路线,兼具易用性(使用YAML编写用例)与 灵活性(使用Python编写用例),非常适合团队接口测试自动化落地。

三、HttpRunner 版本演进

HttpRunner 自 2017 年发布以来,经历了多个重大版本升级,不断提升其功能、稳定性与可扩展性。

以下版本对比来自官方文档:

版本v1v2v3HttpRunner+v4
发布时间2018.03.072019.01.012020.03.102021.11.182022.05.01
开发语言PythonPythonPythonGolangGolang + Python
版本号规范(semver)
网络协议HTTP(S)/1.1HTTP(S)/1.1HTTP(S)/1.1HTTP(S)/1.1多协议 HTTP(S)/HTTP2/WebSocket/TCP/RPC
脚本转换工具HARHARHARHARHAR/Postman/Swagger/Curl
工程脚⼿架
测试⽤例(集)格式v1v2v2v2v2
测试⽤例分层机制v1v2v2v2v2
脚本格式类型YAML/JSONYAML/JSONYAML/JSON/pytestYAML/JSONYAML/JSON/pytest/gotest
脚本格式校验jsonschemaTODO
脚本编写语法提示pytest 链式调用gotest 链式调用gotest 链式调用 + pytest 链式调用
脚本执行引擎Python unittestPython unittestPython pytestGo 自研Go 自研 + Python pytest
插件化语言(debugtalk.xx)PythonPythonPython多语言(Go/Python)多语言(Go/Python/Java/etc.)
参数提取机制regex + 点分隔符jmespath + regex + 点分隔符jmespathjmespath + regexjmespath + regex
skip 机制TODO
接口测试报告html 自研(jinja2)html 自研(jinja2)pytest-html/allurehtml 自研(Go template)html 自研(Go template) + pytest-html/allure
性能测试引擎Python LocustPython LocustPython LocustGo BoomerGo Boomer
运行环境依赖Python 2.7/3.3+Python 2.7/3.5+Python 3.7+ pytest无需依赖Go 引擎无需依赖
pytest 引擎依赖 Python 3.7+
网络性能采集
安装部署方式pippippipcurl/wgetcurl/wget
四、HttpRunner安装和使用

HttpRunner 追求“简单易用”,即使是新用户,也能在 10 分钟内快速跑通第一个接口自动化用例。

一、安装部署

HttpRunner v4 采用 Go 语言开发,已提供跨平台二进制安装包。安装只需一条命令:

bash -c "$(curl -ksSL https://httprunner.com/script/install.sh)"

AI写代码

安装完成后,你将获得命令行工具hrp,通过下面命令查看帮助:

hrp -h

AI写代码

示例输出(简略):​​​​​

  1. Usage:

  2. hrp [command]

  3. Available Commands:

  4. boom run load test with boomer

  5. convert convert JSON/YAML testcases to pytest/gotest scripts

  6. har2case convert HAR to json/yaml testcase files

  7. pytest run API test with pytest

  8. run run API test with go engine

  9. startproject create a scaffold project

  10. ...


二、创建项目脚手架

执行以下命令初始化一个示例项目,项目目录结构自动生成:

hrp startproject demo

AI写代码

示例输出日志会显示创建过程,完成后你会看到:

  1. demo/

  2. ├── .env

  3. ├── .gitignore

  4. ├── debugtalk.py

  5. ├── har/

  6. │ └── .keep

  7. ├── reports/

  8. │ └── .keep

  9. └── testcases/

  10. ├── demo_requests.yml

  11. ├── demo_ref_testcase.yml

  12. └── demo_with_funplugin.json


三、快速预览测试用例

demo_requests.yml为例,里面包含多个 HTTP 请求测试步骤。

示例节选:

  1. config:

  2. name: "request methods testcase with functions"

  3. base_url: "https://postman-echo.com"

  4. variables:

  5. foo1: config_bar1

  6. foo2: config_bar2

  7. expect_foo1: config_bar1

  8. expect_foo2: config_bar2

  9. verify: False

  10. export: ["foo3"]

  11. teststeps:

  12. - name: get with params

  13. variables:

  14. foo1: bar11

  15. foo2: bar21

  16. sum_v: "${sum_two(1, 2)}"

  17. request:

  18. method: GET

  19. url: /get

  20. params:

  21. foo1: $foo1

  22. foo2: $foo2

  23. sum_v: $sum_v

  24. headers:

  25. User-Agent: HttpRunner/${get_httprunner_version()}

  26. extract:

  27. foo3: "body.args.foo2"

  28. validate:

  29. - eq: ["status_code", 200]

  30. - eq: ["body.args.foo1", "bar11"]

  31. - eq: ["body.args.sum_v", "3"]

  32. - eq: ["body.args.foo2", "bar21"]

说明:


四、自定义函数示例(debugtalk.py)

debugtalk.py允许你定义业务相关的函数,并在 YAML 中调用。

示例代码:

  1. import funppy

  2. def get_httprunner_version():

  3. return "v4.0.0-alpha"

  4. def sum_two_int(a: int, b: int) -> int:

  5. return a + b

  6. if __name__ == '__main__':

  7. funppy.register("get_httprunner_version", get_httprunner_version)

  8. funppy.register("sum_two", sum_two_int)

  9. funppy.serve()


五、运行接口测试

执行以下命令,运行项目中的测试用例,并生成 HTML 报告:

hrp run demo/testcases/demo_requests.yml demo/testcases/demo_ref_testcase.yml --gen-html-report

AI写代码

AI写代码


六、查看测试报告

打开reports/目录中生成的 HTML 文件,浏览器打开后即可查看:


七、性能压测(Boomer)

利用已有接口用例,快速做性能压测,无需额外改造。

示例命令:

hrp boom demo/testcases/demo_requests.yml --spawn-count 100 --spawn-rate 10

AI写代码

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 8:52:56

【计算机毕业设计案例】springboot基于顾客偏好的唯品会推荐系统设计与实现网购购物商城系统服装商城系统电子产品商城推荐系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/1 4:43:50

Apache Ignite 广告实时竞拍系统架构全攻略

目录 引言 内存优先架构满足低延迟需求 高吞吐与线性扩展能力 实时数据更新与事件驱动 分布式计算加速决策逻辑 数据一致性与事务保证 与Spring Boot生态无缝集成

作者头像 李华
网站建设 2026/5/1 6:57:42

Dubbo 面试必问!你还了解别的分布式框架吗?

文章目录你还了解别的分布式框架吗?一、什么是分布式框架?二、常见的分布式框架有哪些?1. **Spring Cloud**核心组件配置示例使用场景2. **gRPC**核心特点示例代码使用场景3. **Thrift**核心特点示例代码使用场景4. **Motan**核心特点示例代码…

作者头像 李华
网站建设 2026/5/1 1:43:18

“智汇众力 共擎新元”,机器人租赁平台“擎天租”发布

12月22日,全国机器人租赁生态峰会暨擎天租平台发布会在上海举行。据「TMT星球」了解,大会以“智汇众力,共擎新元”为主题,聚焦机器人租赁产业生态共建,通过“擎天租平台”赋能租赁业务、进行全链路价值共创&#xff0c…

作者头像 李华
网站建设 2026/4/30 14:39:38

Java 开发必看:什么时候用 for,什么时候用 Stream?

前几天写代码的时候,有一个很简单的需求:从一堆用户里找出 VIP 用户,把他们的名字转成大写,然后再打印出来。 我下意识写了行 for 循环,但写到一半又犹豫了,现在不是都推荐用 Stream 吗?会不会…

作者头像 李华
网站建设 2026/5/1 9:14:05

多号切换到崩溃?这款微信管理系统,把复杂变简单!

做过微信运营、客户管理的人都懂,“多号并行”的痛点,手里管理多个微信账号,既要运营客户、维护关系,又要定时发朋友圈,还要频繁切换账号,多个账号窗口堆在桌面,点错、漏发更是常事。而我们一直…

作者头像 李华