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

如何在Cypress的JSON配置文件中引用已导出的环境变量?

在Cypress配置文件中引用系统环境变量的实现方法

直接在JSON配置文件里写"UserID": "${CYPRESS_USER_ID}"是无效的——JSON本身不支持变量插值语法。下面提供两种可行的实现方案:

方案一:通过cypress.config.js加载并替换配置变量

在Cypress主配置文件中读取dev.json,手动解析并替换其中的环境变量占位符,步骤如下:

  1. 修改cypress.config.js,添加配置读取与变量替换逻辑:
const { defineConfig } = require('cypress');
const fs = require('fs');
const path = require('path');

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      // 获取命令行传入的configFile参数,默认用dev
      const configFileName = config.env.configFile || 'dev';
      // 拼接配置文件路径
      const configFilePath = path.resolve(__dirname, `./${configFileName}.json`);
      // 读取并解析JSON配置
      const customConfig = JSON.parse(fs.readFileSync(configFilePath, 'utf8'));

      // 遍历env字段,替换变量占位符
      if (customConfig.env) {
        Object.entries(customConfig.env).forEach(([key, value]) => {
          if (typeof value === 'string' && value.match(/^\${.*}$/)) {
            // 提取环境变量名
            const envVarName = value.slice(2, -1);
            // 用系统环境变量替换,找不到则保留原占位符
            customConfig.env[key] = process.env[envVarName] || value;
          }
        });
      }

      // 合并自定义配置到Cypress全局配置
      config = { ...config, ...customConfig };
      return config;
    },
  },
});
  1. 保持dev.json内容不变:
{
  "env": {
    "UserID": "${CYPRESS_USER_ID}"
  }
}
  1. 运行测试命令npx cypress open --env configFile=dev,Cypress会自动将${CYPRESS_USER_ID}替换为你export的环境变量值。

方案二:直接使用Cypress自动加载的环境变量

Cypress会自动识别所有前缀为CYPRESS_的系统环境变量,并注入到Cypress.env()中(自动去掉前缀)。比如你export的CYPRESS_USER_ID,可以直接在测试代码中通过Cypress.env('USER_ID')获取,无需在dev.json中配置。

如果一定要在dev.json的env字段中保留UserID键,可将其设为空值或默认值,Cypress会自动用系统环境变量覆盖:

{
  "env": {
    "UserID": ""
  }
}

运行测试时,Cypress.env('UserID')会自动读取CYPRESS_USER_ID的值。

内容的提问来源于stack exchange,提问作者Jonathan Viana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:58:00