Cypress环境变量
baseUrl
- 当你配置了 baseUrl ,测试套件中的 cy.visit() 、 cy.request() 都会自动以 baseUrl 的值作为前缀
- 并且,当你需要访问某些网址或者发起接口请求时,在代码中就可以不用再指定请求的 host 或者 url 了
如何配置 baseUrl
在cypress.config.ts
中新增变量baseUrl
import { defineConfig } from "cypress";
export default defineConfig({
e2e: {
setupNodeEvents(on, config) {
// implement node event listeners here
},
baseUrl:''
}
});
通过环境变量来覆盖 baseUrl
即使配置了 baseUrl
,我们也可以通过环境变量来覆盖它
CYPRESS_baseUrl=https://www.baidu.com
设置环境变量的方式
-
在 cypress.json 文件中设置
-
创建一个 cypress.env.json 文件
-
配置环境变量 CYPRESS_*
-
在 CLI 中传递为 --env (命令行运行中添加)
-
在插件中设置一个环境变量
-
可以通过 test configuration 设置环境变量
cypress.config.ts
配置环境变量
在env 键下设置的任何 key:value 都是环境变量
import { defineConfig } from "cypress";
export default defineConfig({
env:{
bar:'bar',
car:'car'
}
});
读取环境变量
- 获取全部:
Cypress.env()
- 获取指定key:
Cypress.env('bar')
Cypress.env().bar
describe('env test',()=>{
it('env',()=>{
let env=Cypress.env();
cy.log(`env:${JSON.stringify(env)}`);
cy.log(`bar:${env.bar}`);
cy.log(`car:${Cypress.env('car')}`);
})
})
cypress.env.json
- 可以创建自己的 cypress.env.json 文件,Cypress 将会自动检查它
- 并且里面的值会覆盖 cypress.config.ts中重名的环境变量
- 它创建在 cypress.config.ts 同级目录下
{
"bar":"bar2"
}
CYPRESS_*
- 计算机中任何以 CYPRESS_ 或 cypress_ 开头的环境变量都会自动被 Cypress 识别出来
- 会直接覆盖 cypress.json 和 cypress.env.json 文件中重名的环境变量
- Cypress在添加环境变量时,会自动去掉 CYPRESS_ 前缀
- 用户级别环境变量的优先级会高于系统变量
it('sys env',()=>{
cy.log(`var1:${Cypress.env().var1}`);
})
- 注意:需要将vscode重启,否则变量为undefind
--env
- 可以通过命令行将环境变量作为命令行参数传进来
- 它的优先级最高,会覆盖其他地方设置的重名环境变量
- 可以为 cypress open 或 cypress run 添加 --env 参数
npx cypress open --env key1=val1,key2=val2
plugins
中声明环境变量
- 可以使用 plugins 通过 Node 代码动态设置它们,而不必在文件中设置环境变量
- 具体使用查看后续
test configuration
设置环境变量
- 可以给测试用例或测试用例集单独设置环境变量
- 会覆盖其他方式设置的环境变量
- 测试用例级别设置的环境变量优先级更大
it('test config',{env:{
'bar':'local bar',
'car':'local car'
}},()=>{
cy.log(`bar:${Cypress.env().bar}`);
cy.log(`car:${Cypress.env().car}`);
})