Cypress系列(14)- 环境变量详解

若是想重新学起Cypress,可以看下面的系列文章哦

https://www.cnblogs.com/poloyy/category/1768839.html

 

前言

  • 环境变量,实在就是凭据环境的转变,变量会有差别的值
  • 好比最常见的:开发环境、测试环境、生产环境的 URL 一定不一样,我们可以凭据差别的环境选择差别的环境变量
  • 这就是为什么我们要学习环境变量的缘故原由

 

环境变量在以下情形会很有用

  • 差别开发人员,对应的值也可能差别
  • 差别环境下的值是差别的,入:dev、test、prod
  • 某些值会频仍转变,而且高度动态
  • 环境变量很容易会更改,尤其是在连续集成(CI)中运行时

 

栗子

不要在测试中举行硬编码(写死,常量),需要改的时刻需要动代码,好比:

cy.request('https://api.acme.corp') // 这将在其他环境中无法使

 

使用环境变量后

cy.request(Cypress.env('EXTERNAL_API')) // 指向动态环境变量

 

当差别环境运行时,若是需要接见差别的 URL 我们只需要改环境变量即可了,而不用动到代码

 

baseUrl

  • 前面我们说到可以通过环境变量设置测试套件接见的 URL,这是其中一种方式
  • 而 Cypress 早就替我们想好了若何解决这问题,可以通过设置 baseUrl 来取代环境变量的方式
  • 当你设置了 baseUrl ,测试套件中的 cy.visit() 、 cy.request() 都市自动以 baseUrl 的值作为前缀
  • 而且,当你需要接见某些网址或者提议接口请求时,在代码中就可以不用再指定请求的 host 或者 url 了

 

若何设置 baseUrl

  • 仔细的小伙伴已经知道,前面我讲 Cypress 全局设置项的时刻已经提到过 baseUrl 了
  • 只需要在 cypress.json 文件举行设置就可以啦,如下

Cypress系列(14)- 环境变量详解

 

代码中挪用

cy.visit("")

// 错误写法  cy.visit()

记着挪用 visit 或 request 时,再怎么样也要传个空字符串 “” ,不能啥都不填哦

 

通过环境变量来笼罩 baseUrl

纵然设置了 baseUrl ,我们也可以通过环境变量来笼罩它

CYPRESS_baseUrl=https://staging.app.com cypress run

 

设置环境变量

一共有五种方式

  1. 在 cypress.json 文件中设置
  2. 建立一个 cypress.env.json 文件
  3. 导出为 CYPRESS_* 
  4. 在 CLI 中通报为 –env (下令行运行中添加)
  5. 在插件中设置一个环境变量

 

—————————–>>>>>>>>>>>>>>>>>>> 点击右侧目录即可跳转

 

最常见的做法

  • 使用一种计谋举行内陆开发,但在 CI(连续集成)中运行时使用另一种计谋
  • 在测试运行时,可以使用 Cypress.env() 接见环境变量的值

 

cypress.json 中设置

在 cypress.json 的 env 键下设置的任何 key:value 都是环境变量

 

cypress.json 代码

Cypress系列(14)- 环境变量详解

 

测试文件代码

Cypress系列(14)- 环境变量详解

上位机开发之西门子PLC-S7通信实践

// 打印所有环境变量
Cypress.env()

// 打印某个环境变量的值
Cypress.env("foor")

 

测试效果

Cypress系列(14)- 环境变量详解

 

优瑕玷

优点 瑕玷
适用于需要源码托管(git)并在所有盘算机保持相同的值 只适用于在所有盘算机上应该有相同的值

 

建立 cypress.env.json 文件

该文件的形貌

  • 可以建立自己的 cypress.env.json 文件,Cypress 将会自动检查它
  • 而且内里的值会笼罩 cypress.json 中重名的环境变量
  • 它建立在 cypress.json 同级目录下

 

用这个文件有啥用

若是将cypress.env.json 添加到.gitgnore文件中,那么文件中的值对于每个开发人员的盘算机都是差别的

 

cypress.env.json 文件代码

Cypress系列(14)- 环境变量详解

 

测试文件代码

Cypress系列(14)- 环境变量详解

 

测试效果

Cypress系列(14)- 环境变量详解

在 cypress.json 中也有一个 key 的环境变量,所以在 cypress.env.json 的 key 的值笼罩了它的值

 

优瑕玷

优点 瑕玷
专用文件,只存放环境变量 需要单独多处置一个新的文件
可以从其他构建过程中天生此文件 可能会过分干预 1 或 2 个环境变量
差别盘算机的环境变量可能差别  

 

CYPRESS_*

重点!

  • 盘算机中任何以 CYPRESS_ 或 cypress_ 开头的环境变量都市自动被 Cypress 识别出来
  • 会直接笼罩 cypress.json 和 cypress.env.json 文件中重名的环境变量
  • Cypress在添加环境变量时,会自动去掉 CYPRESS_ 前缀

 

在系统添加环境变量

Cypress系列(14)- 环境变量详解

 

总结

  • 我测试过发现并没有生效,也不知道为啥,需要后面再研究研究
  • 实在并不推荐这种写法,当环境变量无效时,再改起来就很麻烦了

 

–env

重点!

  • 可以通过下令行将环境变量作为下令行参数传进来
  • 它的优先级最高,会笼罩其他地方设置的重名环境变量 
  • 可以为 cypress open 或 cypress run 添加 –env 参数

 

cmd 下令

在 Cypress 安装目录下,cmd敲

yarn cypress:open --env host=poloyy.com,key=下令行参数环境变量

yarn cypress:run --env host=poloyy.com,key=下令行参数环境变量

 

测试文件代码

Cypress系列(14)- 环境变量详解

 

测试效果

Cypress系列(14)- 环境变量详解

 

优瑕玷

优点 瑕玷
不需要对文件或设置项举行任何更改 使用 –env 并不友好
简单明了的设置环境变量  
优先级最高,笼罩其他形式设置的环境变量  

原创文章,作者:mxxx8新闻网,如若转载,请注明出处:https://www.mxxx8.com/archives/14571.html