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

如何配置Cypress根据测试用例通过/失败结果执行不同操作?

实现方案

可以通过if条件判断完成该需求,Cypress的afterEach钩子可直接获取当前测试用例的执行状态,根据状态分支执行对应逻辑即可。

核心原理是读取当前测试用例的状态属性,该属性返回值共三种:

  • passed:测试用例执行通过
  • failed:测试用例执行失败
  • pending:测试用例未执行/被跳过

完整示例代码

依赖this上下文的通用写法(兼容所有Cypress版本)

注意钩子和测试用例必须使用普通函数声明,不能用箭头函数,否则this无法绑定Cypress测试上下文:

describe('TestSuite', function(){
  afterEach(function() {
    if (this.currentTest.state === 'passed') {
      // 测试通过时执行的逻辑
      console.log('测试用例执行成功,执行成功分支操作')
      // 自定义成功操作写在此处
    } else if (this.currentTest.state === 'failed') {
      // 测试失败时执行的逻辑
      console.log('测试用例执行失败,执行失败分支操作')
      // 自定义失败操作写在此处,比如上报错误、保存额外调试日志等
    }
  })

  it('THIS TEST CASE PASSED', function(){
    // 示例成功断言
    expect(true).to.equal(true)
  })

  it('THIS TEST CASE FAILED', function(){
    // 示例失败断言
    expect(true).to.equal(false)
  })
})

Cypress 12+版本简化写法

新版本可直接通过全局Cypress对象读取状态,不需要依赖this绑定,支持箭头函数:

afterEach(() => {
  if (Cypress.currentTest.state === 'passed') {
    // 成功分支逻辑
  } else if (Cypress.currentTest.state === 'failed') {
    // 失败分支逻辑
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:15:04