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}`);})