首页
/ Bruno CLI 如何同时输出 JSON、JUnit 与 HTML 测试报告并用 --reporter-skip-headers 控制报告头

Bruno CLI 如何同时输出 JSON、JUnit 与 HTML 测试报告并用 --reporter-skip-headers 控制报告头

2026-09-08 19:36:39作者:咎岭娴Homer

在 CI 或本地跑 Bruno API 集合时,常见的需求是:同一次 bru run 既要产出机器可解析的 JSON 报告,又要给 CI 流水线(如 Jenkins、GitLab CI)提供 JUnit XML,还要一份 HTML 报告供团队在浏览器里查看,同时报告里不能留下 Authorization 这类敏感请求头。Bruno CLI 的 run 命令支持在同一次执行中通过 --reporter-json--reporter-junit--reporter-html 三个选项各写一个报告文件,并用 --reporter-skip-headers 指定要从报告输出中剔除的报头,无需跑多次。

准备条件

  1. 全局安装 Bruno CLI(使用任意 Node 包管理器,以 NPM 为例):

    npm install -g @usebruno/cli
    
  2. 进入 API 集合所在目录再执行 bru run。Bruno CLI 的退出状态码文档中明确列出了 4 -- bru was called outside of a collection root directory,即命令必须在集合根目录下调用,否则直接报错退出。

一次运行同时输出三种格式的报告

bru run 为每种报告格式提供了独立选项,三者可以在同一条命令中叠加使用:

选项 作用
--reporter-json <string> 指定生成 JSON 报告的路径
--reporter-junit <string> 指定生成 JUnit 报告的路径
--reporter-html <string> 指定生成 HTML 报告的路径

执行示例(在当前集合根目录下运行,递归处理时加 -r):

bru run folder -r \
  --reporter-json reports/report.json \
  --reporter-junit reports/report.xml \
  --reporter-html reports/report.html

run 命令的内部实现(run.jsformats 的收集逻辑)会把每个有值的 reporter 选项登记为一个格式,运行结束后统一写出各报告文件,因此三个选项互不冲突,指向的路径建议先创建好所在目录——退出码 2 表示 "the specified output directory does not exist"。

如果只需要单一格式,文档给出的替代路径是 --output 配合 --format(可用格式为 json(默认)或 junit):

bru run request.bru --output results.json
bru run request.bru --output results.xml --format junit

注意 --output 只能写一个文件,与 --reporter-* 系列定位不同;多格式需求用 --reporter-* 叠加即可。

用 --reporter-skip-headers 控制报告中的请求头

--reporter-skip-headers 是一个数组类型选项,可重复传入,每个值表示要从报告输出中跳过的一个报头名:

bru run --reporter-skip-headers "Authorization"

其处理逻辑在 sanitize-results.js:对每个结果,分别遍历 result.request.headersresult.response.headers,按大小写不敏感的方式匹配并删除命中的报头,所以 --reporter-skip-headers "authorization""Authorization" 效果一致。

几个关键边界:

  • 该选项只影响报告输出(run.js 中的描述是 "Skip specific headers from the reporter output"),请求本身仍会照常携带并发送这些报头,不会改变线上行为;
  • 如果不想在报告中保留任何报头,直接用布尔选项 --reporter-skip-all-headers("Omit headers from the reporter output"),它会把请求和响应头整体置空;
  • 同类还有 --reporter-skip-request-body--reporter-skip-response-body 和同时省略两者的 --reporter-skip-body,与报头过滤可自由组合。

组合完整场景的命令如下:

bru run folder -r \
  --env Local \
  --reporter-json reports/report.json \
  --reporter-junit reports/report.xml \
  --reporter-html reports/report.html \
  --reporter-skip-headers "Authorization" \
  --reporter-skip-headers "Set-Cookie"

说明:--env Local 为可选分支,仅当集合需要指定环境时使用;--reporter-skip-headers 重复书写一次即跳过一个报头。

验证结果

  1. 退出码0 表示执行成功,1 表示集合中存在失败的请求、测试或断言(完整退出码表见 readme.md 的 "Scripting" 一节)。CI 中可用退出码判断本次集合是否全部通过。
  2. 报告文件:确认 reports/report.jsonreports/report.xmlreports/report.html 三个文件按指定路径生成。JSON 报告的内容是一个包含 summary(totalRequests、passedRequests、failedRequests、totalAssertions 等统计字段)与 results(每个请求的明细)的对象结构,可在浏览器或 jq 中直接查看。
  3. 报头是否被剔除:检查 JSON 报告中对应请求的 request.headersresponse.headers,其中不应再出现 AuthorizationSet-Cookie 字段,其余报头保留。JUnit 报告中的用例结构(testsuite/testcase、@name@status、failure 节点)可参考 junit.spec.js 中的断言;HTML 报告则在浏览器中打开确认请求头展示区域已不包含被跳过的项。

限制与注意事项

  • 报告路径所在目录必须已存在(退出码 2);--output 使用 --format 传入了不支持的格式时退出码为 9
  • --reporter-skip-headers 只做报告层面的过滤:被跳过的报头仍会随真实请求发送,如果目标是"减少网络上传输的报头",该选项不解决该问题。
  • 可选配合项:--tests-only 只跑带测试/断言的请求,--bail 在首个失败后停止执行;两者都会改变最终报告内容,按需使用。
  • 更完整的选项说明见 packages/bruno-cli/readme.md 的 Command Line Options 表格,以及 run 命令实现 packages/bruno-cli/src/commands/run.js
登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.75 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
857
1.35 K
docsdocs
暂无描述
Markdown
898
5.82 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
921
1.84 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.8 K
1.02 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
531
596
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.02 K
519
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.36 K
1.46 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
548
391