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

Cypress如何在断言失败后继续执行循环并记录错误

解决Cypress断言失败后测试终止的问题

核心问题在于Cypress的should断言是内置的命令级断言,一旦失败就会触发测试终止,普通的catch无法拦截这个错误。要实现"记录错误后继续执行"的需求,你需要替换should断言为手动文本检查,自己控制错误逻辑。

修改后的代码

cy.get('body').then(($body) => { 
  if ($body.find('.MuiTableRow-root.MuiTableRow-hover .MuiTableCell-body').length > 0) {                
    globalActions.getTableRow().then((element) => { 
      if (element.is(':visible')) { 
        globalActions.checkProgressBarDoesntExist().then(() => {
          cy.get('table[data-testid="table-items"] tbody tr').each(($row) => { 
            cy.wrap($row).find('.type').invoke('text').then((stageText) => {
              if (stageText.includes('Testing')) { 
                cy.wrap($row).click();
                ItemsValues.forEach((field) => {
                  // 核心改动:手动获取文本并判断,不用should断言
                  itemsActions.getValue(field)
                    .invoke('text')
                    .then((fieldText) => {
                      if (fieldText.includes('--')) {
                        cy.task('log', `空字段错误:字段${field}的值为"${fieldText}"`);
                        // 可选:收集错误,最后统一断言是否有错误
                        // cy.wrap(errorList).invoke('push', `字段${field}为空`);
                      }
                    });
                });
              }
            });
          });
        });
      }
    });
  }
});

关键改动说明

  • 移除should('not.contain', '--'),改用invoke('text')获取字段文本后手动判断
  • 当检测到--时,仅用cy.task('log')记录错误,不触发Cypress的断言失败机制
  • 这种方式不会中断测试流程,能继续处理后续的列表条目

如果需要最终统一校验是否存在错误,可以在循环结束后断言错误列表是否为空:

// 先在代码开头定义错误收集数组
const errorList = [];

// 在判断空字段时添加错误到数组
if (fieldText.includes('--')) {
  const errorMsg = `字段${field}的值为"${fieldText}"`;
  cy.task('log', `空字段错误:${errorMsg}`);
  errorList.push(errorMsg);
}

// 所有条目处理完后,断言是否有错误
cy.wrap(errorList).should('be.empty', `存在空字段错误:${errorList.join('; ')}`);

内容的提问来源于stack exchange,提问作者Natalia Orzeł

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:05:02