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

Cypress如何仅跳过指定测试用例的全局afterEach函数执行

可行实现方案

无需为每个用例单独编写afterEach钩子,以下两种方案都可以满足需求:

方案1:基于用例标题判断(改动最小)

直接在现有全局afterEach钩子中增加判断逻辑,跳过指定名称的用例校验即可:

describe('AutoLogin Test Case',function(){
    beforeEach(function(){
        Cypress.Cookies.preserveOnce('_session_id')
    })
    afterEach(function(){
        // 仅非登录用例执行ajax状态校验
        if(this.currentTest.title !== 'input login info') {
            cy.get('[id="ajax_working"]',{timeout:6000}).should('not.be.visible')
        }
    })


    it('input login info',function(){ 
        cy.visit('https://***********.******.com/')
        cy.get('[id^=user_username]')
        .type('ChrisPbacon').should('have.value','ChrisPbacon')
        cy.get('[id^=user_password]')
        .type('welcome123').should('have.value','welcome123')
        cy.contains('Sign In Now').click()
    })
    
    // 其余测试用例无需改动
    // it('其他用例1', function() { ... })
    // it('其他用例2', function() { ... })
})

方案2:自定义用例元标记(扩展性更强)

如果后续可能有更多用例需要跳过该校验,推荐使用自定义用例配置标记的方案,避免硬编码标题带来的维护风险:

  1. 首先给需要跳过校验的用例增加自定义配置项:
it('input login info', { skipAjaxCheck: true }, function(){ 
    cy.visit('https://***********.******.com/')
    cy.get('[id^=user_username]')
    .type('ChrisPbacon').should('have.value','ChrisPbacon')
    cy.get('[id^=user_password]')
    .type('welcome123').should('have.value','welcome123')
    cy.contains('Sign In Now').click()
})
  1. 调整afterEach钩子的判断逻辑:
afterEach(function(){
    // 仅未标记跳过的用例执行校验
    if(!Cypress.currentTest.config('skipAjaxCheck')) {
        cy.get('[id="ajax_working"]',{timeout:6000}).should('not.be.visible')
    }
})

后续有其他需要跳过该校验的用例,只需给对应it配置添加skipAjaxCheck: true即可,无需修改afterEach逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:48:04