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

Cypress脚本问题:testdata.json更新后无法读取新值

解决Cypress测试用例间读取testdata.json旧值的问题

你遇到的核心问题是Cypress的cy.readFile默认会缓存文件内容,导致后续测试用例读取的是第一次缓存的旧值,而非最新写入的内容。结合你的代码场景,给你几个直接可行的解决办法:

1. 禁用readFile的缓存机制

修改你的文件读写代码,给cy.readFile加上{ cache: false }选项,强制每次读取都从磁盘获取最新内容,而不是用缓存:

cy.readFile(filepath, { cache: false }).then((obj)=>{
  obj.site = site_name;
  cy.writeFile(filepath, obj);
})

2. 内存中维护最新值,减少文件依赖

生成随机字符串后,同时把值存入Cypress环境变量,后续用例优先从内存获取,避免文件IO的异步延迟:

// 生成随机字符串
const site_name = Alpha_Numeric();
// 存入环境变量
Cypress.env('currentSite', site_name);

// 同步写入文件(同时禁用缓存)
cy.readFile(filepath, { cache: false }).then((obj)=>{
  obj.site = site_name;
  cy.writeFile(filepath, obj);
})

// 后续用例获取最新值时
const latestSite = Cypress.env('currentSite') || Alpha_Numeric();

3. 测试用例前置刷新缓存

在每个测试用例执行前,通过beforeEach主动读取一次文件并禁用缓存,确保用例开始时拿到的是最新状态:

beforeEach(() => {
  // 刷新文件缓存
  cy.readFile(filepath, { cache: false });
});

这些方法都能解决你遇到的旧值读取问题,其中第一种是最直接针对缓存问题的修复,第二种可以减少文件IO带来的潜在异步问题,第三种则能确保每个测试用例的初始状态一致。

内容的提问来源于stack exchange,提问作者Parama Sivam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:52:07