Cypress.io:可以在Cypress中设置全局变量,如果是,则可以;怎么样?

时间:2019-06-12 16:03:41

标签: javascript cypress

我正在尝试在Cypress.io中设置一个全局变量(不是GLOBAL ENV VARIABLE)。我想抽象一个 url ,我将一遍又一遍地使用 AND ,这些东西可以在多个文件中使用(而不仅仅是一个文件)。

此外,我不想将其设置为baseurl。我已经准备好了,我想不谈。

有人可以帮我吗?

3 个答案:

答案 0 :(得分:2)

我最近在github上的另一个博客中找到了答案,该博客链接到这里:https://github.com/cypress-io/cypress/issues/1121

但是此博客中的答案已由我的Brian Mann回答...

“ TL; DR-仅使用模块,而不是全局变量。

Cypress只是JavaScript。像您自己的应用程序文件一样,所有有关文件结构化的基本原则都适用于赛普拉斯。

在这种情况下,您将不断提及变量。变量是在特定文件中定义的事物,永远不会是全局的。这意味着它们不可能被共享。可根据定义变量的本地范围访问变量。

为了使其具有全局性,必须将它们附加到全局对象:窗口。但是,没有必要这样做,赛普拉斯会自动内置模块支持。这使您可以将功能导入每个规范文件,从而使它们比使用全局变量更加井井有条。

我们在这里有此食谱:https://docs.cypress.io/examples/examples/recipes.html#Node-Modules

我希望这对Stackoverflow上的其他人有帮助!

答案 1 :(得分:1)

这可以更容易地做到: 在您的 cypress.json 添加

"env": {
   "YourVarName":"YourVarValue"
}

在您的代码中,您可以使用以下命令访问您的 var:

const myGolabalVar = Cypress.env("YourVarName")

这就是你所需要的

答案 2 :(得分:0)

您可以使用 cypress.json 文件并在那里设置环境值。如果您不想使用 .env 值,那么您可以创建任何您喜欢的常量文件并通过 cypress index.js 文件将其导入。

创建一个常量文件, 例如,cypress/constants.js 里面有一个 json 对象:

    export const constants = {
  VALUEA: 'my text for value A',
  VALUEB: 'example value b'
}

在 support/index.js 添加对您的 constants.js 文件的引用:

import '../constants';

这会自动将常量字典导入到您的所有规范文件中。

在规范文件中引用常量所需要做的就是使用“constants.VALUEA” 例如:

cy.get('#button-label-id).should('contain.text', constants.VALUEB);