如何终止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
相关产品推荐
相关产品推荐

