如何在Playwright JSON报告中获取测试断言统计数据
单个测试/测试套件的断言统计获取方法
结论
完全可以获取单个测试或测试套件的断言通过/失败总数,你需要调整报告生成配置或者直接解析测试框架的原始输出数据。
具体操作方案
1. 调整JSON报告生成配置
你当前使用的['json', { outputFile: 'test-results.json' }]仅输出顶层测试统计,需修改配置开启详细层级的报告输出,不同测试框架的配置方式如下:
- Cypress:在
reporterOptions中添加reportSuiteAsScenarios: true,或使用cypress-multi-reporters搭配mocha-junit-reporter生成带断言明细的报告。 - Mocha:使用
--reporter json时,默认会输出包含每个断言状态(passed/failed/skipped)的tests数组,避免使用精简版reporter配置即可。
2. 解析带明细的JSON报告
调整配置后生成的JSON报告会包含测试套件、测试用例的层级结构,示例如下:
{ "stats": {...}, "suites": [ { "title": "用户登录测试套件", "tests": [ { "title": "正确账号登录", "assertions": [ { "passed": true, "title": "验证跳转至首页" }, { "passed": true, "title": "验证用户名显示正确" } ] }, { "title": "错误密码登录", "assertions": [ { "passed": true, "title": "验证提示错误信息" }, { "passed": false, "title": "验证停留在登录页" } ] } ] } ] }
只需遍历suites和tests数组,统计每个测试用例/套件下assertions中passed和failed的数量即可。
3. 备选方案:监听测试框架事件
如果修改reporter配置无法满足需求,可在测试代码中直接监听断言事件:
- Mocha:使用
runner.on('pass', () => {})和runner.on('fail', () => {})统计每个断言状态,自行维护各测试用例的计数。 - Cypress:在
support/index.js中添加Cypress.on('test:after:run', (test) => {}),test对象中的assertions数组可直接用于统计。
关于Allure和HTML报告的补充
Allure报告默认会展示每个测试用例的断言明细,但需确保开启详细断言追踪:
- 使用Cypress的Allure插件时,需在配置中设置
allure: { attachRequests: true },且测试代码中需用cy.allure()标记断言。 - 之前未看到统计数据,大概率是测试代码未显式标记断言,或生成报告时未包含原始测试数据。
内容的提问来源于stack exchange,提问作者Shiva
相关产品推荐
相关产品推荐

