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