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

Cypress发起多次接口请求后如何清除请求缓存?

问题修复方案

该错误通常是Cypress对GET请求的默认缓存机制,导致后续请求读取到本地缓存的异常payload触发,可通过以下方式解决:

方案1:单次请求禁用缓存(推荐,影响范围小)

在cy.request的配置项中添加cache: false强制跳过本地缓存,同时可以补充请求头明确告知服务端不使用缓存,修改后代码如下:

for (let i = 0; i < 10; i++) {
      cy.request({
        method: 'GET',
        url: `https://[API endpoint ]/api/v1/[requst]/${ids[i]}`,
        headers: {
          "authorization": token,
          "Cache-Control": "no-cache",
          "Pragma": "no-cache"
        },
        cache: false // 禁用Cypress内部请求缓存的核心配置
      })
        .then((res) => {
          usernames.push([{ value: res.body.instagrams[0].username }])
        })
        .then(() => {
          cy.wait(2000)
        })
}

方案2:全局禁用请求缓存

如果需要所有测试请求都不走缓存,在Cypress配置文件中添加全局配置即可:

// cypress.config.js(Cypress 10+版本)
const { defineConfig } = require('cypress')

module.exports = defineConfig({
  e2e: {
    cache: false,
    // 其余原有配置保持不变
  }
})

// 旧版Cypress在cypress.json中添加配置
{
  "cache": false
}

附加排查方案

如果禁用缓存后问题仍然存在,可以增加以下配置定位问题:

  • 在cy.request配置中添加failOnStatusCode: false,先拿到完整响应内容,确认是否为服务端返回的payload本身存在异常
  • 每次请求前清空本地存储和Cookie,避免授权信息异常:
    // 放在循环内的请求之前执行
    cy.clearLocalStorage()
    cy.clearCookies()
    
  • 打印每次请求的ids[i]取值,确认循环时参数拼接正确,避免异步逻辑导致的参数错误

内容的提问来源于stack exchange,提问作者Ashish Khokhariya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:06:08