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

如何使用Cypress移除Fixture CSV文件中的回车换行符

Cypress CSV比对失败:换行符不一致问题解决

问题背景

在Cypress测试中,需要比对网站导出的CSV文件与Fixture目录下的CSV文件内容,但因Fixture文件(Windows系统生成)使用\r\n换行,而下载的CSV文件(类Unix系统生成)使用\n换行,导致断言失败。尝试用replace('\r\n', '\n')仅替换了第一行的换行符,其余行未生效。

解决方案

JavaScript中String.replace()方法如果传入普通字符串作为匹配项,只会替换第一个匹配结果。要全局替换所有的\r\n,需要使用正则表达式并添加全局标识g。

修改断言处的代码,将固定字符串替换改为正则全局替换:

// 原代码:仅替换第一个\r\n
expect(downloadCsv.trim()).to.eq(fixturesCsv.replace('\r\n', '\n').trim());

// 修改后:全局替换所有\r\n
expect(downloadCsv.trim()).to.eq(fixturesCsv.replace(/\r\n/g, '\n').trim());

修改后的完整测试代码

const grouplist = [' TYP ', ' PRÜFSTAND ', ' TYP/PRÜFSTAND ', ' PRÜFSTAND/TYP ', ' WERKSTÜCKTRÄGER NUMMER ']
it('Ergebnisstatistik - check export for grouplist - Werkstückträger 🏇', function() {
  cy.log('Export the Werkstückträger Nummer table into EXCEL');
  const dayjs = require('dayjs');

  cy.get('button.icon-btn_statistik').should('be.visible').click();
  cy.contains('div>div.option', grouplist[4]).should('be.visible').click();
  cy.wait(500);
  cy.get('.icon-table').click();
  sdi.waitForTable();
  cy.get('.icon-export-table').click();
  
  cy.readFile(`${Cypress.config('downloadsFolder')}/Ergebnisstatistik ` +
    dayjs().format('YYYY-MM-DD') + '.csv', 'utf-8', {timeout: 15000}).then((downloadCsv) => {
      expect(downloadCsv).to.be.a('string')
      
      cy.readFile(`${Cypress.config('fixturesFolder')}/sda_ergebnisstatistik_export/Ergebnisstatistik_5Werkstückträger_Export.csv`,
      'utf-8', {timeout: 15000}).then((fixturesCsv) => {
        // 关键修改:使用正则全局替换所有\r\n为\n
        expect(downloadCsv.trim()).to.eq(fixturesCsv.replace(/\r\n/g, '\n').trim());
      });
  });
});

额外优化建议

为了更稳妥,也可以将下载的CSV文件的换行符也统一处理(比如防止出现混合换行的情况),可以封装一个统一处理换行符的函数:

const normalizeNewlines = (str) => str.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
expect(normalizeNewlines(downloadCsv).trim()).to.eq(normalizeNewlines(fixturesCsv).trim());

内容的提问来源于stack exchange,提问作者Gowthami Dhulipudi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:15:27