news 2026/3/1 19:38:21

接口测试利器 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/2/26 19:56:57

AI时代的技术债务管理:新工具与新方法

AI时代的技术债务管理:新工具与新方法关键词:AI时代、技术债务管理、新工具、新方法、软件开发摘要:在AI时代,软件开发面临着诸多新的挑战和机遇,技术债务管理也变得尤为重要。本文深入探讨了AI时代技术债务管理的相关内容&#x…

作者头像 李华
网站建设 2026/3/1 12:38:57

面试官问:0 基础能不能转大模型?到底怎么转?

站在现在回头看,会发现一个有趣的现象: AI 大潮滚滚 2 年,流量的风向能变,岗位的 JD 能变,各家模型能天天更新,但真正能落地的东西,并没有变。 这 2 年里,我带过很多转行同学&#…

作者头像 李华
网站建设 2026/2/26 5:22:17

计算机毕业设计springboot基于JAVA的渝行旅游热点推荐系统 基于Spring Boot框架的重庆旅游热点智能推荐系统设计与实现 利用Java技术构建重庆旅游热点推荐平台的Spring Boo

计算机毕业设计springboot基于JAVA的渝行旅游热点推荐系统6447u9(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着互联网技术的飞速发展,旅游行业的信息化管理需…

作者头像 李华
网站建设 2026/2/25 18:28:53

Walrus Haulout 黑客松获胜名单揭晓

数据的未来离不开信任、透明性和可验证性。但要真正实现这一愿景,需要全新的思维方式、不同以往的工具,以及敢于跳出固有框架的开发者。 2025 年 Haulout 黑客松正式启动,这是首个将三个正在重塑数据协作方式的工具整合在一起的黑客松活动&a…

作者头像 李华
网站建设 2026/3/1 18:38:46

Advantageous 英文单词学习

1️、基本信息单词:advantageous词性:形容词发音: 🇺🇸 /ˌd.vnˈteɪ.dʒəs/🇬🇧 /ˌd.vənˈteɪ.dʒəs/词源: 来自拉丁语 advantage(有利,优势&#xff…

作者头像 李华