
Bruno CLI 如何同时输出 JSON、JUnit 与 HTML 测试报告并用 --reporter-skip-headers 控制报告头【免费下载链接】brunoOpensource IDE For Exploring and Testing APIs (lightweight alternative to Postman/Insomnia)项目地址: https://gitcode.com/GitHub_Trending/br/bruno在 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指定要从报告输出中剔除的报头无需跑多次。准备条件全局安装 Bruno CLI使用任意 Node 包管理器以 NPM 为例npm install -g usebruno/cli进入 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 报告的路径执行示例在当前集合根目录下运行递归处理时加-rbru run folder -r \ --reporter-json reports/report.json \ --reporter-junit reports/report.xml \ --reporter-html reports/report.htmlrun命令的内部实现run.js 中formats的收集逻辑会把每个有值的 reporter 选项登记为一个格式运行结束后统一写出各报告文件因此三个选项互不冲突指向的路径建议先创建好所在目录——退出码2表示 the specified output directory does not exist。如果只需要单一格式文档给出的替代路径是--output配合--format可用格式为json默认或junitbru 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.headers与result.response.headers按大小写不敏感的方式匹配并删除命中的报头所以--reporter-skip-headers authorization与Authorization效果一致。几个关键边界该选项只影响报告输出run.js 中的描述是 Skip specific headers from the reporter output请求本身仍会照常携带并发送这些报头不会改变线上行为如果不想在报告中保留任何报头直接用布尔选项--reporter-skip-all-headersOmit 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重复书写一次即跳过一个报头。验证结果退出码0表示执行成功1表示集合中存在失败的请求、测试或断言完整退出码表见 readme.md 的 Scripting 一节。CI 中可用退出码判断本次集合是否全部通过。报告文件确认reports/report.json、reports/report.xml、reports/report.html三个文件按指定路径生成。JSON 报告的内容是一个包含summarytotalRequests、passedRequests、failedRequests、totalAssertions 等统计字段与results每个请求的明细的对象结构可在浏览器或jq中直接查看。报头是否被剔除检查 JSON 报告中对应请求的request.headers与response.headers其中不应再出现Authorization、Set-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。【免费下载链接】brunoOpensource IDE For Exploring and Testing APIs (lightweight alternative to Postman/Insomnia)项目地址: https://gitcode.com/GitHub_Trending/br/bruno创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考