接口测试利器 HttpRunner 全面解析

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


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

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

一、HttpRunner 简介

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

  • 支持 YAML / JSON / Python 多种测试用例格式

  • 支持测试数据参数化、断言机制、测试用例复用

  • 与 pytestAllure 深度集成

  • 支持 CI/CD 集成,适合企业自动化流程

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

官方地址:

  • GitHub: https://github.com/httprunner/httprunner

  • 文档: https://httprunner.com

二、与其他接口测试工具对比

工具/框架脚本语言主要特点适合人群
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)"

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

hrp -h

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

Usage:
  hrp [command]

Available Commands:
  boom         run load test with boomer
  convert      convert JSON/YAML testcases to pytest/gotest scripts
  har2case     convert HAR to json/yaml testcase files
  pytest       run API test with pytest
  run          run API test with go engine
  startproject create a scaffold project
  ...

二、创建项目脚手架

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

hrp startproject demo

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

demo/
├── .env
├── .gitignore
├── debugtalk.py
├── har/
│   └── .keep
├── reports/
│   └── .keep
└── testcases/
    ├── demo_requests.yml
    ├── demo_ref_testcase.yml
    └── demo_with_funplugin.json
  • testcases/:存放测试用例

  • debugtalk.py:自定义函数脚本

  • reports/:测试报告目录


三、快速预览测试用例

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

示例节选:​​​​​​​

config:
  name: "request methods testcase with functions"
  base_url: "https://postman-echo.com"
  variables:
    foo1: config_bar1
    foo2: config_bar2
    expect_foo1: config_bar1
    expect_foo2: config_bar2
  verify: False
  export: ["foo3"]

teststeps:
  - name: get with params
    variables:
      foo1: bar11
      foo2: bar21
      sum_v: "${sum_two(1, 2)}"
    request:
      method: GET
      url: /get
      params:
        foo1: $foo1
        foo2: $foo2
        sum_v: $sum_v
      headers:
        User-Agent: HttpRunner/${get_httprunner_version()}
    extract:
      foo3: "body.args.foo2"
    validate:
      - eq: ["status_code", 200]
      - eq: ["body.args.foo1", "bar11"]
      - eq: ["body.args.sum_v", "3"]
      - eq: ["body.args.foo2", "bar21"]

说明:

  • config 定义全局配置,如基本 URL、变量、SSL 校验等。

  • teststeps 是有序的测试步骤列表,每步代表一个 HTTP 请求和校验

  • 变量支持定义和覆盖,支持 ${函数名(参数)} 调用自定义函数。

  • 断言(validate)用于校验返回状态码和响应体字段。


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

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

示例代码:​​​​​​​

import funppy

def get_httprunner_version():
    return "v4.0.0-alpha"

def sum_two_int(a: int, b: int) -> int:
    return a + b

if __name__ == '__main__':
    funppy.register("get_httprunner_version", get_httprunner_version)
    funppy.register("sum_two", sum_two_int)
    funppy.serve()
  • 通过 funppy.register 注册函数后,YAML 用例就能调用 ${sum_two(1,2)}

  • 这是基于“约定优于配置”的设计,方便逻辑复用。


五、运行接口测试

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

hrp run demo/testcases/demo_requests.yml demo/testcases/demo_ref_testcase.yml --gen-html-report
  • 支持同时运行多个用例文件

  • --gen-html-report 会在 reports/ 目录生成可视化测试报告


六、查看测试报告

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

  • 每条用例请求和响应详情

  • 断言结果和错误信息

  • 用例执行耗时、状态统计


七、性能压测(Boomer)

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

示例命令:

hrp boom demo/testcases/demo_requests.yml --spawn-count 100 --spawn-rate 10
  • --spawn-count:并发用户数

  • --spawn-rate:每秒启动用户数

  • 压测过程实时输出统计数据

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值