You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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用例的失败异常,强制标记为通过:

  1. 首先在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()
  })
}
  1. 用例文件中直接调用该函数包裹测试逻辑:
itKnownBug('XXX-123', '登录页记住密码勾选后未自动填充', () => {
  // 原有测试逻辑不需要修改
  cy.visit('/login')
  cy.get('#remember-pwd').check()
  // 其余测试逻辑...
})

方案3:报告生成阶段过滤已知失败用例

如果你使用自定义测试报告(比如Mochawesome),可以在报告生成的配置规则中,将标题带有特定标记(比如[已知Bug]前缀)的失败用例,自动修改状态为通过/跳过,不会出现在失败统计结果中。


内容的提问来源于stack exchange,提问作者Piotr Franczak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:15:05