HttpRunner 入门

面向零基础,基于 Ubuntu 虚拟机 + MobaXterm 实操,从安装、创建项目、编写用例、功能执行到性能压测,一步步手把手教学。

一、环境准备

1. 基础环境说明

  • 操作系统:Ubuntu(虚拟机)
  • 连接工具:MobaXterm(Windows 远程连接虚拟机)
  • 网络要求:虚拟机与主机网络互通(桥接模式,可互相 ping 通)

2. 前置检查

  1. 虚拟机已开启 SSH 服务,MobaXterm 可正常登录
  2. 终端默认路径:/home/你的用户名(用户主目录)

二、安装 HttpRunner(hrp)

官方在线安装脚本因阿里云 OSS 限制无法使用,采用离线二进制包安装,稳定无报错。

步骤 1:下载对应安装包

Ubuntu 主流架构为 x86_64/amd64,执行以下命令下载:

复制代码
# 下载官方编译包
wget https://github.com/httprunner/httprunner/releases/download/v4.3.6/hrp-v4.3.6-linux-amd64.tar.gz

步骤 2:解压并部署程序

复制代码
# 解压文件
tar -zxvf hrp-v4.3.6-linux-amd64.tar.gz

# 创建存放目录(统一管理工具)
mkdir -p ~/.hrp/bin

# 移动执行文件到目录
mv hrp ~/.hrp/bin/

步骤 3:配置环境变量(全局调用命令)

复制代码
# 将路径写入环境变量配置文件
echo 'export PATH=$HOME/.hrp/bin:$PATH' >> ~/.bashrc

# 生效配置
source ~/.bashrc

步骤 4:验证安装

复制代码
hrp -v

输出版本号(如 hrp version v4.3.6)即代表安装成功。

三、项目基础操作

1. 创建测试项目

任意目录下执行命令,生成标准化项目目录结构:

复制代码
# 创建名为 demo 的测试项目
hrp startproject demo

2. 进入项目目录

复制代码
cd demo

项目目录结构说明(核心文件):

plaintext

复制代码
demo/
├── testcases/    # 存放接口测试用例(YAML 文件)
├── reports/      # 存放测试报告
├── debugtalk.py  # 自定义函数文件(接口参数、数据处理)
└── .env          # 环境变量配置文件

3. 运行官方示例用例(功能测试)

项目自带示例用例,直接执行验证流程:

复制代码
# 运行所有用例,并生成 HTML 可视化报告
hrp run testcases/ --gen-html-report
  • 执行成功:终端打印所有断言 result=true
  • 报告位置:demo/results/时间戳/report.html,可通过 MobaXterm 下载到 Windows 打开查看

四、核心语法精讲(小白必懂)

HttpRunner 使用 YAML 格式 编写用例,语法简洁,重点掌握 5 个核心关键字。

1. config 全局配置

作用:整个测试用例的公共设置,所有步骤共享。

复制代码
config:
    name: "测试用例名称"    # 用例备注名
    variables:             # 全局变量,全用例可用
        foo1: "测试值"
    base_url: "https://xxx.com"  # 接口基础域名(简化地址写法)
    verify: False          # 忽略 HTTPS 证书校验(避免报错)
    export: ["变量名"]      # 导出变量,跨步骤使用

2. teststeps 测试步骤

作用:一个步骤对应一个接口请求,多个步骤按顺序执行。 基础模板:

复制代码
teststeps:
- name: "步骤名称"         # 步骤备注
  variables:               # 局部变量,仅当前步骤生效(会覆盖全局同名变量)
    foo2: "局部值"
  request:                # 接口请求核心配置
    method: GET            # 请求方式:GET/POST
    url: /get              # 接口路径(拼接 base_url)
    headers:               # 请求头
      Content-Type: "application/x-www-form-urlencoded"
    params:                # GET 请求参数
      key: $foo1
    body: "key1=$foo1&key2=$foo2"  # POST 表单/文本参数

3. extract 变量提取(高频用法)

含义:从接口返回结果中,提取指定字段值,保存为变量,给后续接口使用(接口传参核心功能)。

复制代码
extract:
    foo3: "body.args.foo2"  # 提取返回体中 args 下的 foo2 值,存入变量 foo3

4. validate 断言(判断接口是否正常)

含义:校验接口返回结果是否符合预期,断言全部通过 = 用例执行成功。

复制代码
validate:
    - eq: ["status_code", 200]  # 断言1:响应状态码必须等于 200
    - eq: ["body.form.foo1", "预期值"] # 断言2:返回表单数据匹配预期
  • eq:等于,最常用断言规则

5. testcase 引用其他用例

含义:复用已写好的测试用例(用例套娃),实现流程化测试(例:登录 → 查询数据)。

复制代码
testcase: testcases/requests.yml  # 调用指定路径的其他用例
export: ["foo3"]                   # 把被调用用例的变量导出,继续使用

五、性能压测(hrp boom)

使用 hrp boom 实现并发压测,模拟多用户同时请求接口,测试接口承压能力。

1. 压测命令语法

复制代码
hrp boom 用例文件路径 --spawn-count 并发数 --spawn-rate 爬坡速率

参数白话解释:

  1. --spawn-count总并发用户数,模拟多少人同时请求接口
  2. --spawn-rate爬坡速率(压斜率),每秒新增多少个并发用户

2. 实操示例

以项目内置用例为例,100 并发、每秒新增 10 个用户:

复制代码
# 进入项目目录后执行
hrp boom testcases/requests.yml --spawn-count 100 --spawn-rate 10
  • 逻辑:10 个用户 / 秒递增,10 秒后达到 100 并发,持续压测

3. 压测报告指标解读

压测结束后终端会输出统计数据,核心指标一看就懂:

指标 含义 参考标准
Passed / Failed 成功请求数 / 失败请求数 失败数越低越好,生产环境建议失败率 = 0
Total Fail Ratio 整体失败率 一般要求 ≤1%
Total RPS 每秒处理请求数(吞吐量) 数值越大,接口性能越强
Average Response Time 平均响应时间 数值越小,接口响应越快(常规要求 <500ms)
MAX Response Time 最大响应时间 排查慢请求、超时问题

4. 压测注意事项

  1. 禁止压测线上生产接口,仅测试测试环境接口;
  2. 先保证功能用例执行正常,再做压测;
  3. 并发数循序渐进,不要一次性设置超大并发,避免服务器崩溃。

六、常见报错 & 解决方案

报错 1:no such file or directory(文件不存在)

  • 原因:命令中写的用例文件名 / 路径错误
  • 解决:执行 ls testcases/ 查看真实文件名,修正路径

报错 2:接口请求超时 / 连接失败

  • 原因 1:虚拟机网络不通、防火墙拦截 解决:检查虚拟机桥接模式,临时关闭主机 / 虚拟机防火墙
  • 原因 2:接口地址错误 解决:核对 base_url 和接口路径

报错 3:HTTPS 证书异常

  • 解决:在 config 中添加 verify: False 跳过证书校验

报错 4:压测出现大量 Failed

  • 原因:并发过高、接口本身性能瓶颈、服务器连接数不足
  • 解决:降低并发数 / 爬坡速率,排查接口代码、服务器资源

七、学习总结 & 进阶方向

  1. 基础流程回顾 安装工具 → 创建项目 → 编写 / 运行功能用例 → 查看报告 → 执行性能压测
  2. 入门重点 优先掌握:变量、请求配置、extract 提取、validate 断言,这是接口自动化核心。
  3. 进阶学习方向
  • 自定义函数:修改 debugtalk.py 实现复杂数据处理;
  • 数据驱动:使用 CSV/JSON 实现多组参数循环测试;
  • 场景化测试:通过 testcase 串联多个接口,模拟完整业务流程。
相关推荐
小小测试开发4 小时前
Playwright vs Selenium vs Cypress:从浏览器协议到 API 设计的全面对比与实测
人工智能·selenium·测试工具
我的xiaodoujiao6 小时前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具
川石课堂软件测试8 小时前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
天才测试猿2 天前
Selenium自动化测试网页加载太慢怎么解决?
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
川石课堂软件测试3 天前
安全测试|服务器安全加固方法
服务器·功能测试·测试工具·jmeter·mysql·web安全·单元测试
Saniffer_SH4 天前
NAND技术(二):从 Channel、Die/LUN、P/E Cycle 到 LDPC,一次讲透 NAND 里那些最容易误解的概念
人工智能·驱动开发·嵌入式硬件·测试工具·fpga开发·计算机外设·压力测试
杭州双色云谱5 天前
2026年蓝光光谱照度计选购与实战指南:双色云谱如何守护光环境安全?
科技·测试工具
一孤程5 天前
AI辅助测试用例生成实战——用大模型把测试设计效率提升300%
人工智能·测试工具·ai·aigc·测试用例·测试·测试覆盖率
测试员周周5 天前
【skills5】一份 spec 生成 k6/JMeter/Locust:性能压测 + 全站截图,上线前的双保险
功能测试·网络协议·测试工具·jmeter·http·自动化·集成测试