运行时动态指定环境变量

首先,在cypress.json中,更改如下:

  1. {
  2. "viewportWidth": 1680,
  3. "viewportHeight": 1050,
  4. "env":{
  5. "test":{
  6. "CODEMAO_HOST": "https://test-xxxxx.cn",
  7. "URL": "https://test-xxxxx.cn/",
  8. "USERNAME": "xxxxxx",
  9. "PASSWORD": "111111"
  10. },
  11. "staging": {
  12. "CODEMAO_HOST": "https://bxxxxx.cn",
  13. "URL": "https://staging-xxxxxx.cn/",
  14. "USERNAME": "xxxxx",
  15. "PASSWORD": "111111"
  16. },
  17. "prod": {
  18. "CODEMAO_HOST": "https://xxxx.cn",
  19. "URL": "https://xxxxx.cn/",
  20. "USERNAME": "xxxxxx",
  21. "PASSWORD": "111111"
  22. }
  23. }
  24. }

其次,更改”support/index.js”文件

  1. ///<reference types='cypress' />
  2. // Import commands.js using ES2015 syntax:
  3. import './commands'
  4. // Alternatively you can use CommonJS syntax:
  5. // require('./commands')
  6. // 根据最终的环境变量,重写url
  7. before(()=>{
  8. const targetEnv = Cypress.env('testEnv')
  9. cy.log(`测试环境为: \n ${JSON.stringify(targetEnv)}`);
  10. cy.log(`环境详细配置为: \n ${JSON.stringify(Cypress.env(targetEnv))}`);
  11. cy.log(Cypress.env(Cypress.env('testEnv'))['CODEMAO_HOST']);
  12. Cypress.config('baseUrl', Cypress.env(targetEnv).Url);
  13. });

测试用例testLogin.js文件如下:

  1. //testLogin.js
  2. ///<reference types='cypress' />
  3. import LoginPage from '../../../page/login'
  4. describe('kitten登陆测试', function(){
  5. var username = Cypress.env(Cypress.env('testEnv'))['USERNAME'];
  6. const password = Cypress.env(Cypress.env('testEnv'))['PASSWORD'];
  7. before(function(){
  8. cy.loginRequest(username, password);
  9. });
  10. it('测试登陆成功', function(){
  11. const logininstance = new LoginPage()
  12. logininstance.isTargetPage();e
  13. cy.url().should('include', Cypress.env(Cypress.env("testEnv"))['URL'])
  14. });
  15. });

执行启动命令如下:

  1. yarn cypress:open --env testEnv=prod

执行结果如下:
image.png