如何在赛普拉斯配置文件中引用环境变量?

克里斯·F

我已经阅读了赛普拉斯的环境变量和其他有关在赛普拉斯运行中传递环境变量的文章。但是,如何在JSON配置文件中引用环境变量?

例如我

$ npm run cy:open -- --config-file config/mytests.json --env db.user=db_user,db.password=pw1234abcd

因为我想避免在我的配置文件中硬编码数据库信用,像这样

{
  ...
  "env" : {
    "db" : {
      "user" : "db_user",
      "password" : "pw1234abcd"
    }
  }
}

但是,JSON文件中使用传入值的语法是什么?这看起来像什么?

{
  ...
  "env" : {
    "db" : {
      "user" : "???syntax???",
      "password" : "???syntax???"
    }
  }
}
史蒂夫·佐迪亚克

您的配置文件只是env变量的一个来源,命令行是另一个。

在运行时,它们会合并到内存中,并可以通过Cypress.env进行访问

// cypress.json
{
  "env": {
    "foo": "bar",
    "baz": "quux"
  }
}

npm run cy:open -- --env user=db_user

Cypress.env() // => { foo: "bar", baz: "quux", user: "db_user" }

在赛普拉斯运行器中,单击设置/配置以查看合并的环境对象。


通过命令行传递变量是位限制,所有“嵌套”类型的键(带有“。”)都以平面方式合并,即

// cypress.json
{
  "env": {
    "foo": "bar",
    "baz": "quux"
  }
}

npm run cy:open -- --env db.user=db_user,db.password=pw1234abcd

Cypress.env() 
/* => { 
  foo: "bar", 
  baz: "quux", 
  db.user: "db_user", 
  db.password: "pw1234abcd" 
} */

但是您可以对env对象应用reducer以获得嵌套结构,

const env = Cypress.env();

Object.keys(env)
  .reduce((env, key) => {
    if (key.includes('.')) {
      const [parent, child] = key.split('.');
      if (!env[parent]) {
        env[parent] = {};
      }
      env[parent][child] = env[key];
      delete env[key];
    }
    return env;
  }, env)

Cypress.env(env); // save back to Cypress if required

console.log(env);

/* => { 
  foo: "bar", 
  baz: "quux", 
  db: {
    user: "db_user", 
    password: "pw1234abcd"
  }
} */

在测试的顶部或cypress / support / index.js中添加它

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在赛普拉斯中配置环境变量

在赛普拉斯中组合环境变量?

如何在赛普拉斯中使用变量

如何在Wildfly的standalone.xml配置文件中引用环境变量?

赛普拉斯中的路径变量

如何从赛普拉斯环境变量中获取一组 URL,然后遍历它们并分别为每个 URL 运行测试?

如何将API响应正文或属性保存在环境变量或json中,以便以后在赛普拉斯的其他请求中使用

赛普拉斯在自定义命令中加载环境变量

如何从赛普拉斯的 .sql 文件中读取数据?

如何在赛普拉斯中存根节点模块?

如何在赛普拉斯中声明localStorage

如何在赛普拉斯中访问baseURL的值

如何在赛普拉斯中单击x次

如何在赛普拉斯中创建命令

如何在赛普拉斯的某些变量中存储日期

如何在赛普拉斯中测试视频文件上传?

赛普拉斯-如何在赛普拉斯中进行轮询?

不能引用赛普拉斯全局变量

如何在数组中传递文件名,然后迭代赛普拉斯中的文件上载功能

在赛普拉斯中配置屏幕截图文件夹

如何在赛普拉斯中共享变量值

如何使用赛普拉斯测试文件输入?

如何从赛普拉斯项目中读取JSON文件?

赛普拉斯-如何按顺序运行测试文件

赛普拉斯如何在失败时提出请求

如何在赛普拉斯中使用软断言

赛普拉斯如何从 div 中获取文本并存储在变量中以备后用

如何在Kubernetes配置文件中添加环境变量?

如何在IntelliJ中设置spring活动配置文件环境变量