gpt4 book ai didi

cypress - 如何在 Cypress 配置文件中引用环境变量?

转载 作者:行者123 更新时间:2023-12-04 01:09:55 27 4
gpt4 key购买 nike

我已阅读 Environment Variables in Cypress以及其他关于在 Cypress 运行中传递环境变量的文章。但是,如何在 JSON 配置文件中引用环境变量?
例如,我做

$ npm run cy:open -- --config-file config/mytests.json --env db.user=db_user,db.password=pw1234abcd
因为我想避免在我的配置文件中硬编码 DB 凭证,就像这样
{
...
"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 runner 中,单击 Settings/Configuration 以查看合并的 env 对象。

通过命令行传递变量有点限制,所有“嵌套”类型键(带有“.”)都以扁平方式合并,即
// 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 .

关于cypress - 如何在 Cypress 配置文件中引用环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65191104/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com