Bruno CLI 快速上手:3 步在命令行跑通 API 集合并生成测试报告
【免费下载链接】brunoOpensource IDE For Exploring and Testing API's (lightweight alternative to Postman/Insomnia)项目地址: https://gitcode.com/GitHub_Trending/br/bruno
你还在打开图形界面逐个点击请求做回归吗?测试结果一关窗口就无处可查。本文带你用 Bruno CLI 一条命令跑完整个 API 集合,并生成能直接接进 CI 的 JUnit 报告。
场景引入:发布前那个"翻车"晚上
昨晚发布前,你打开 Bruno 逐个点"发送",测到第 15 个请求才想起 URL 还指向预发环境;等测完,又发现结果没有存到任何地方,拿不出报告给团队看。这种手动点测,其实一行终端命令就能干完。
先懂再练:Bruno CLI 在项目里是什么角色
Bruno 的集合(Collection)本质是磁盘上一个装着.bru文件的目录,图形界面和 CLI 读的是同一份文件。CLI 包位于仓库的 packages/bruno-cli,运行时不启动应用,直接读取目录、按顺序发请求、汇总结果,天然适合 CI 和定时任务。执行逻辑集中在 run 命令源码。
| 能力 | Bruno GUI | Bruno CLI |
|---|---|---|
| 执行方式 | 逐个手动点击请求 | 一条命令批量跑整个集合 |
| 切换环境 | 界面下拉框选择 | --env命令行参数 |
| 结果留存 | 仅应用内可见 | json/junit/html 报告文件 |
| 典型场景 | 交互式调试 | 回归、CI、定时任务 |
动手:从安装到第一份报告
1. 安装 CLI 并确认版本
全局执行npm install -g @usebruno/cli,CLI 以 npm 包分发,有 Node.js 环境一条命令即可。装完在终端跑bru --version,能输出版本号就说明就绪。
2. 跑通整个集合
cd进集合根目录(bruno.json所在处),执行bru run。不带路径参数时会递归跑全部请求;也可以只跑单个文件或子文件夹,如bru run login.bru、bru run auth -r(-r表示递归包含子文件夹)。跑完终端会打印执行汇总:通过/失败数、断言数、耗时。
3. 绑定环境与覆盖变量
集合的environments/子目录放着一份或多份环境文件(.bru/.json/.yml),用--env加载;只想临时改一个变量就追加--env-var,可写多次:
bru run auth --env Local --env-var apiToken=tok-1234. 生成报告文件
加上--reporter-*参数即输出对应格式,可同时指定多个:
bru run auth -r --reporter-junit results.xml --reporter-html report.html报告结构可对照 示例报告:顶层有summary(汇总统计)与results(每个请求明细,含失败断言原因)。
常用参数对照表:
| 参数 | 作用 | 示例值 |
|---|---|---|
--env | 指定环境文件名 | Local |
--env-var | 覆盖单个变量,可多次 | apiToken=tok-123 |
-r | 递归运行子文件夹 | 开关,无值 |
--bail | 首个失败立即停止 | 开关,无值 |
--reporter-junit | 输出 JUnit 报告 | results.xml |
--tests-only | 只跑含测试的请求 | 开关,无值 |
进阶玩法
🔌接入 CI:CLI 用退出码向外部进程传达结果——0 为全部通过,1 表示存在失败,4 表示没在集合目录内执行。把bru run -r --bail写进流水线,失败时 CI 会自动置红;完整退出码表见 CLI readme。
🎯按标签挑着跑:给请求打上 tags,运行时用--tags/--exclude-tags过滤,例如bru run -r --tags smoke只跑标记为冒烟的请求,一个集合就能切出多套测试集。
排错速查
| 典型现象 | 可能原因 | 处理方式 |
|---|---|---|
| 退出码 6 | 环境名不存在 | 核对environments/下的文件名(不带扩展名) |
| 退出码 4 | 没在集合根目录执行 | 先cd到bruno.json所在目录 |
| 退出码 2 | 报告输出目录不存在 | 先建目录,或改为已存在的目录 |
| 退出码 3 | 请求链无限跳转 | 检查脚本里的跳转配置,避免自引用 |
| 汇总 FAIL 但请求看着正常 | 有失败断言而非请求报错 | 打开 json 报告看assertionResults的 error 字段 |
一句话回顾
- CLI 与 GUI 共用同一份集合目录,请求只维护一套;
bru run不带路径即全量递归跑,-r控制指定子文件夹的递归;--env决定"用哪个环境跑",--env-var决定"本次临时改哪个值";- 报告支持 json/junit/html 三种格式,退出码就是接入 CI 的钩子。
下一步建议:拿仓库里的 示例集合 练一次完整的"运行 + 出报告"流程,遇到异常先对照上面的退出码表定位。
【免费下载链接】brunoOpensource IDE For Exploring and Testing API's (lightweight alternative to Postman/Insomnia)项目地址: https://gitcode.com/GitHub_Trending/br/bruno
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考