Bruno CLI 快速上手:3 步在命令行跑通 API 集合并生成测试报告
2026/8/31 10:52:06 网站建设 项目流程

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 GUIBruno 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.brubru run auth -r-r表示递归包含子文件夹)。跑完终端会打印执行汇总:通过/失败数、断言数、耗时。

3. 绑定环境与覆盖变量

集合的environments/子目录放着一份或多份环境文件(.bru/.json/.yml),用--env加载;只想临时改一个变量就追加--env-var,可写多次:

bru run auth --env Local --env-var apiToken=tok-123

4. 生成报告文件

加上--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没在集合根目录执行cdbruno.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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询