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

如何在Cypress测试执行结束后删除测试过程中下载的文件

Cypress 测试执行后删除下载文件的实现方案

前置说明

Cypress 本身不直接提供文件系统操作的API,你需要通过注册task调用Node.js的fs模块实现文件删除,以下是两种常用的实现方式:

方式1:单个测试用例结束后删除指定文件

适合只需要删除当前用例产生的特定下载文件的场景

  1. 首先在cypress.config.js中注册删除文件的自定义任务
const { defineConfig } = require('cypress')
const fs = require('fs/promises')
const path = require('path')

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on('task', {
        // 接收文件名作为参数,删除对应下载文件
        deleteFile(fileName) {
          const targetPath = path.join(config.downloadsFolder, fileName)
          return fs.unlink(targetPath)
            .then(() => true)
            .catch(err => {
              // 文件不存在或删除失败时不抛出测试错误,可按需调整逻辑
              console.log(`删除文件失败:${err.message}`)
              return false
            })
        }
      })
    }
  }
})
  1. 在测试用例的after钩子中调用该任务
describe('下载功能测试', () => {
  // 替换为你的实际下载文件名,动态文件名可在测试过程中捕获赋值
  const downloadFileName = 'test_export.xlsx'

  it('点击下载按钮正常生成文件', () => {
    cy.get('.download-btn').click()
    // 等待文件下载完成,避免删除时文件还未生成
    cy.readFile(`${Cypress.config('downloadsFolder')}/${downloadFileName}`, {
      timeout: 15000
    }).should('exist')
  })

  // 当前describe块下的所有用例执行完成后触发删除
  after(() => {
    cy.task('deleteFile', downloadFileName)
  })
})

方式2:全部测试执行完成后清空整个下载目录

适合需要统一清理所有测试产生的下载文件的场景

  1. 在cypress.config.js的setupNodeEvents中新增清空目录的任务
on('task', {
  clearDownloadsDir() {
    const downloadDir = config.downloadsFolder
    return fs.readdir(downloadDir)
      .then(fileList => {
        return Promise.all(
          fileList.map(file => fs.unlink(path.join(downloadDir, file)))
        )
      })
      .then(() => true)
      .catch(err => {
        console.log(`清空下载目录失败:${err.message}`)
        return false
      })
  }
})
  1. 在全局钩子中调用该任务,在cypress/support/e2e.js中添加如下代码:
// 所有测试用例全部执行完成后触发清空
after(() => {
  cy.task('clearDownloadsDir')
})

注意事项

  • Cypress 默认下载目录为cypress/downloads,如果你自定义了下载路径,需要将代码中的路径替换为实际配置的路径
  • 如果下载的是动态文件名,可先读取下载目录下符合命名规则的文件,再批量删除
  • 文件操作的错误捕获逻辑可按需调整,如果你需要删除失败时抛出测试错误,去掉catch逻辑即可

内容的提问来源于stack exchange,提问作者F.C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:36:04