Cypress多URL测试:忽略失败继续执行并标记异常URL
解决方案
要实现单个URL测试失败不中断其余测试,同时清晰标记失败URL,可通过动态生成独立测试用例的方式实现,每个URL对应一个独立的it块,这样单个测试失败不会影响其他测试执行,且测试报告会明确显示失败的URL。
修改后的测试脚本如下:
/// <reference types="cypress"/> const urlTest = require('../../fixtures/URLs.json') const estado = 'São Paulo' const municipio = 'SAO PAULO' describe('Test de url', () => { // 遍历URL数组,为每个URL生成独立测试用例 urlTest.forEach((param) => { it(`Verificar componente de revendedores em: ${param.url}`, () => { cy.visit(param.url) cy.welcomeBannerAndCookiesAcceptation() // 每个测试用例独立设置拦截,避免跨测试干扰 cy.intercept('POST', '**/WhereToBuyResult').as('searchResultState') cy.intercept('POST', '**/CitiesReSellers').as('searchResultTown') cy.validateMunicipioFieldIsAvailable() cy.getState(estado) cy.wait('@searchResultTown') cy.getTown(municipio) cy.wait('@searchResultState') cy.validateIfResselersAreVisible() }) }) })
关键修改点说明:
- 移除原有的单个
it块,改为遍历urlTest数组,为每个URL动态生成独立的it测试用例,每个测试完全独立执行,单个失败不会中断整体流程。 - 在
it的名称中加入当前测试的URL,测试报告中会直接显示哪个URL对应的测试失败,无需额外标记。 - 每个
it内部独立设置cy.intercept,避免不同测试用例之间的拦截规则互相干扰,保证测试独立性。
额外优化(可选)
如果需要在测试失败时自定义日志或标记,可在每个it中添加错误监听:
it(`Verificar componente de revendedores em: ${param.url}`, () => { // 监听测试失败事件,输出自定义日志 cy.on('fail', (error) => { cy.log(`URL ${param.url} 测试失败,原因:${error.message}`) // 抛出错误确保测试报告标记为失败 throw error }) // 原有测试步骤... })
内容的提问来源于stack exchange,提问作者Stevan Oliveira
相关产品推荐
相关产品推荐

