您的配置文件只是环境变量的一个来源,命令行是另一个来源。
在运行时,它们被合并在内存中,并且可以通过赛普拉斯.env https://docs.cypress.io/api/cypress-api/env.html#Examples.
// 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 运行程序中,单击“设置/配置”以查看合并的 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"
} */
但是您可以将reducer应用于env对象以获得嵌套结构,
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"
}
} */
将其添加到测试的顶部,或者添加到赛普拉斯/支持/index.js.