Cypress如何在测试报告中隐藏已知Bug的用例失败结果仅展示新增问题
Cypress 区分已知Bug与新增Bug测试结果实现方案
方案1:使用Cypress原生it.failing()(推荐,Cypress 12.0+ 支持)
这是官方提供的专门针对已知Bug关联用例的标记能力,完全匹配你的需求:
- 被
it.failing()包裹的用例如果运行失败,会被标记为预期失败,不会计入测试套件失败统计,报告中会和未知Bug引发的真正失败明确区隔 - 如果该用例意外运行通过,会触发失败提示,通知你对应已知Bug已经修复,需要更新用例状态
- 不需要修改原有测试逻辑,仅需要包裹用例即可
代码示例:
// 括号内备注关联的BugID,方便后续跟进 it.failing('登录页记住密码勾选后未自动填充(关联BugID: XXX-123)', () => { // 原有测试逻辑不需要任何修改 cy.visit('/login') cy.get('#remember-pwd').check() cy.get('#username').type('test001') cy.get('#password').type('123456') cy.get('#login-btn').click() cy.visit('/login') cy.get('#username').should('have.value', 'test001') })
注意:不建议使用
it.skip(),跳过的用例不会执行,无法感知对应Bug是否被修复,长期闲置容易失效。
方案2:低版本Cypress自定义异常捕获
如果你使用的是12.0以下版本的Cypress,可以通过自定义工具函数捕获已知Bug用例的失败异常,强制标记为通过:
- 首先在
cypress/support/e2e.js(旧版本为cypress/support/index.js)中添加全局工具函数:
global.itKnownBug = (bugId, caseTitle, testFn) => { it(caseTitle, () => { // 仅单次捕获当前用例的失败异常,不影响其他用例 Cypress.once('fail', (err) => { Cypress.log({ name: '已知Bug预期失败', message: `关联BugID:${bugId},错误信息:${err.message}` }) // 返回false阻止异常抛出,用例将标记为通过 return false }) testFn() }) }
- 用例文件中直接调用该函数包裹测试逻辑:
itKnownBug('XXX-123', '登录页记住密码勾选后未自动填充', () => { // 原有测试逻辑不需要修改 cy.visit('/login') cy.get('#remember-pwd').check() // 其余测试逻辑... })
方案3:报告生成阶段过滤已知失败用例
如果你使用自定义测试报告(比如Mochawesome),可以在报告生成的配置规则中,将标题带有特定标记(比如[已知Bug]前缀)的失败用例,自动修改状态为通过/跳过,不会出现在失败统计结果中。
内容的提问来源于stack exchange,提问作者Piotr Franczak
相关产品推荐
相关产品推荐

