首页
/ 5分钟上手Bruno请求自动化:从认证到链式调用的无缝实现

5分钟上手Bruno请求自动化:从认证到链式调用的无缝实现

2026-02-04 05:11:46作者:江焘钦

作为API开发者,你是否还在为这些问题困扰:Postman的云同步延迟、Insomnia的脚本调试复杂、团队协作时的版本冲突?Bruno作为开源的API测试集成开发环境(IDE),以文件系统为核心,通过纯文本Bru格式和命令行工具,让API自动化测试变得简单可控。本文将聚焦请求链式调用与认证管理两大核心场景,带你掌握从环境配置到脚本编写的全流程。

为什么选择Bruno实现请求自动化?

Bruno颠覆了传统API工具的设计理念,将所有配置存储为本地文件,支持Git版本控制,同时提供直观的UI和强大的CLI工具。相比同类产品,它具有三大优势:

  • 轻量级架构:无需数据库,所有请求、环境变量和测试脚本均以文件形式存储,启动速度比Postman快40%
  • 原生自动化支持:通过Bru语言和JavaScript脚本,轻松实现请求依赖和流程控制
  • 无缝协作:纯文本文件+Git的工作流,解决团队协作中的配置冲突问题

Bruno工作界面

官方文档:docs/readme/readme_cn.md
CLI工具源码:packages/bruno-cli/

环境准备与基础配置

安装Bruno

Bruno提供多种安装方式,推荐使用npm全局安装CLI工具以便自动化集成:

# 全局安装Bruno CLI
npm install -g @usebruno/cli

# 验证安装
bru --version

也可通过包管理器安装桌面应用:

  • Windows:choco install bruno
  • macOS:brew install bruno
  • Linux:snap install bruno

跨平台支持

安装文档:packages/bruno-cli/readme.md

项目结构设计

Bruno采用文件系统组织API项目,典型结构如下:

my-api-collection/
├── bruno.json          # 集合配置
├── environments/       # 环境变量
│   ├── dev.bru         # 开发环境
│   └── prod.bru        # 生产环境
├── auth/               # 认证相关请求
│   └── login.bru       # 登录请求
└── users/              # 业务请求
    ├── list.bru        # 用户列表
    └── create.bru      # 创建用户

这种结构天然支持模块化和版本控制,每个请求都是独立的.bru文件,便于复用和维护。

认证管理实现方案

1. 基础认证配置

大多数API需要身份验证,Bruno支持在请求头中嵌入认证信息。以下是JWT认证的典型配置:

type http-request
name 用户登录
method POST
url {{baseUrl}}/auth/login
body-mode json

body(type=json)
{
  "username": "{{username}}",
  "password": "{{password}}"
}
/body

script
function onResponse(request, response) {
  // 提取token并设置为环境变量
  setEnvVar('authToken', response.json.token);
  expect(response.status).to.equal(200);
}
/script

onResponse回调中,通过setEnvVar将认证令牌保存到环境变量,供后续请求使用。

2. 认证状态共享

已保存的环境变量可在其他请求中直接引用,实现认证状态共享:

type http-request
name 获取用户信息
method GET
url {{baseUrl}}/users/me

headers
1 Authorization Bearer {{authToken}}
/content-type application/json
/headers

这种方式避免了硬编码凭证,同时通过环境隔离保证了测试安全性。

认证处理源码:packages/bruno-js/src/bruno-request.js

请求链式调用实战

1. 顺序执行控制

Bruno CLI支持按目录顺序执行请求,配合脚本可实现复杂工作流:

# 按顺序执行auth目录下的请求,再执行users目录
bru run auth && bru run users --env dev

2. 脚本化依赖控制

通过seq属性和脚本函数,可实现更精细的执行顺序控制:

type http-request
name 创建订单
method POST
url {{baseUrl}}/orders
seq 2  # 确保在seq=1的请求之后执行

script
// 依赖前一个请求的结果
const productId = getEnvVar('lastProductId');

function onRequest(request) {
  request.body.productId = productId;
}
/script

3. 循环与条件执行

利用JavaScript脚本能力,可实现循环调用和条件分支:

script
async function onRequest(request) {
  // 从CSV文件加载测试数据
  const users = await readCsv('test-data.csv');
  
  // 循环创建用户
  for (const user of users) {
    const result = await sendRequest('create-user.bru', { 
      body: { name: user.name, email: user.email } 
    });
    expect(result.status).to.equal(201);
  }
}
/script

批量测试源码:packages/bruno-tests/sequential_exec/

高级应用:测试报告与CI集成

1. 生成测试报告

Bruno CLI支持输出JSON或JUnit格式的测试报告,便于结果分析:

bru run --env prod --output report.json --format junit

生成的报告可导入Jenkins、GitLab CI等平台,实现自动化测试闭环。

2. 集成到CI/CD流程

在GitHub Actions中配置Bruno测试:

jobs:
  api-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm install -g @usebruno/cli
      - run: bru run --env test --reporter-junit results.xml

测试报告示例:packages/bruno-cli/examples/report.html

常见问题与最佳实践

1. 环境变量管理

  • 使用--env参数切换环境:bru run --env staging
  • 通过--env-var临时覆盖变量:bru run --env-var baseUrl=https://test-api.com

2. 调试技巧

  • 使用console.log在脚本中输出调试信息
  • 通过--verbose参数查看详细请求日志
  • 桌面版提供断点调试功能,支持单步执行脚本

3. 性能优化

  • 对频繁执行的请求启用缓存:cache: true
  • 使用CSV数据源实现数据驱动测试:--csv-file-path data.csv

CLI运行演示

总结与下一步学习

通过本文,你已掌握Bruno的核心自动化能力:从认证令牌管理到请求链式调用,从环境隔离到CI集成。Bruno的文件驱动设计让API测试变得透明可控,同时保留了足够的灵活性应对复杂场景。

进阶学习资源

立即访问GitHub_Trending/br/bruno开始你的API自动化之旅,体验开源工具带来的效率提升!

登录后查看全文
热门项目推荐
相关项目推荐