在 cypress.env.json 中定义变量

Pie*_*o3a 7 javascript cypress

我想为所选应用程序的测试定义全局变量。我想将它们输入到一个文件中 - 阅读文档后我决定使用cypress.env.json.

https://docs.cypress.io/guides/guides/environment-variables.html#Option-1-cypress-json

正如我看到变量已正确导入,但在测试过程中,我收到错误:

"TypeError: Cannot read property 'env' of undefined"
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题有什么建议吗?

https://i.stack.imgur.com/K26vU.png

测试文件:

describe('/register', () => {
    beforeEach(() => {
        cy.visit('/#/register')
    })

    it.only('requires username', () => {
        cy.get('input[type="email"]').Cypress.env('correctEmail')
        cy.get('input[type="password"]').Cypress.env('correctPassword')
        cy.get('button').contains('Sign in').click()
        cy.get('.error-messages').should('contain', 'username can\'t be blankis too short (minimum is 1 character)')
    })
Run Code Online (Sandbox Code Playgroud)

赛普拉斯.env.json:

{
    "correctName": "Bob Ross",
    "incorrectName": "Bobbbbb",
    "correctEmail": "bob@ross.eu",
    "incorrectEmail": "b@bbb",
    "correctPassword": "bobrosss",
    "incorrectPassword": "Oooooo" 
}
Run Code Online (Sandbox Code Playgroud)

小智 14

要回答您最初的问题,cypress.env.json需要将该文件放置在项目的根目录中,紧邻该cypress.json文件。

通过创建单独的 cypress.env.json 文件,您可以访问嵌套值,如下所示:

//cypress.env.js
{
    "user": {
        "username": "Jane",
        "password": "SuperPassword",
        "someOtherData": "veryImportantData"
    }
}
Run Code Online (Sandbox Code Playgroud)

进而

//somewhere in myCypressTest.spec.ts
Cypress.env("user").username      //returns "Jane"
Cypress.env("user").password      //returns "SuperPassword"
Cypress.env("user").someOtherData //returns "veryImportantData"
Run Code Online (Sandbox Code Playgroud)

不幸的是,它并没有在任何地方得到准确记录。我不需要更改任何路径,只需将其移到cypress.env.json我最初放置它的 Cypress 文件夹之外,它就开始工作了。


Dur*_*tko 3

env变量放入cypress.json根文件夹中,如下所示:

     {
       "env": {
         "correctName": "Bob Ross",
         "incorrectName": "Bobbbbb",
         "correctEmail": "bob@ross.eu",
         "incorrectEmail": "b@bbb",
         "correctPassword": "bobrosss",
         "incorrectPassword": "Oooooo" 
       },
     }

Run Code Online (Sandbox Code Playgroud)

我还发现您的代码中还有一个问题。如果你想在输入字段中输入内容,你必须使用.type这样的命令:

     {
       "env": {
         "correctName": "Bob Ross",
         "incorrectName": "Bobbbbb",
         "correctEmail": "bob@ross.eu",
         "incorrectEmail": "b@bbb",
         "correctPassword": "bobrosss",
         "incorrectPassword": "Oooooo" 
       },
     }

Run Code Online (Sandbox Code Playgroud)