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

如何终止Cypress测试并将其标记为成功?

解决Cypress跨域测试卡住并终止测试标记成功的问题

针对你的场景,完全可以在指定位置终止测试并标记为成功,具体修改如下:

修改后的测试代码

it('Cards', () => {
  cy.get('#my-id').click({ force: true })
  let itemID = localStorage.getItem('itemID')
  expect(itemID).to.eq(null);

  // 注册仅作用于当前测试的失败监听器
  const failHandler = (error, runnable) => {
    // 验证核心逻辑
    itemID = localStorage.getItem('itemID')
    expect(itemID).to.not.equal(null)
    
    // 终止当前测试并标记为成功
    runnable.end()
    // 返回false阻止Cypress默认的失败处理流程
    return false
  }
  Cypress.on('fail', failHandler)

  cy.get(`a:visible[id*="the_link"]`).first().click()

  // 测试结束后移除监听器,避免影响其他测试用例
  cy.on('test:after:run', () => {
    Cypress.off('fail', failHandler)
  })
})

关键逻辑说明

  • runnable.end():直接终止当前测试用例,Cypress会将该用例标记为成功——因为我们已经在失败回调中完成了核心验证(itemID不为null)
  • 返回false:告知Cypress跳过默认的失败处理流程,避免后续无意义的等待和错误日志输出
  • 临时监听器+移除操作:确保这个失败处理逻辑只作用于当前测试,不会干扰其他测试用例的错误捕获

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:28:01