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 串联多个接口,模拟完整业务流程。
相关推荐
我的xiaodoujiao6 小时前
API 接口自动化测试详细图文教程学习系列25--继续处理testCase中的数据
python·学习·测试工具·pytest
сокол8 小时前
【网安-研判-WireShark流量分析】网页、RAT、FTP、垃圾邮箱的流量过滤规则实战
网络·测试工具·wireshark
川石课堂软件测试8 小时前
UI自动化测试|XPath元素定位实践
功能测试·测试工具·jmeter·microsoft·ui·postman·harmonyos
IT界的老黄牛9 小时前
手机 Chrome 远程调试实战:adb + DevTools,localhost 就是你的测试服
chrome·测试工具·adb
сокол10 小时前
【网安-研判-WireShark流量分析】HTTPS流量解密
测试工具·https·wireshark
川石课堂软件测试10 小时前
UI自动化测试|CSS元素定位实践
css·测试工具·ui·fiddler·单元测试·appium·harmonyos
可可南木1 天前
3070文件格式--21--fixture文件 3
功能测试·测试工具
一只小白0001 天前
【JVM | 第五篇】—— 深入理解垃圾回收
jvm·测试工具
光影6271 天前
Python接口自动化测试----Requests库基础入门
开发语言·python·测试工具·pycharm·自动化