【问题标题】:Define variables in cypress.env.json在 cypress.env.json 中定义变量
【发布时间】:2019-11-11 22:08:47
【问题描述】:

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

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

我看到变量被正确导入,但在测试过程中,我得到了错误:

"TypeError: Cannot read property 'env' of undefined"

关于如何解决该问题的任何建议?

https://i.imgur.com/uEVg24I.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)')
    })

cypress.env.json:

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

【问题讨论】:

    标签: javascript cypress


    【解决方案1】:

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

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

    我还在您的代码中看到了另一个问题。如果你想在输入字段中输入,你必须使用.type这样的命令:

    cy.get('input[type="email"]').type(Cypress.env('correctEmail'));
    

    【讨论】:

    • 已经尝试过 - 结果相同。当我检查设置时,我将 cypress.env.json 移动到另一个文件夹中 - 赛普拉斯从 cypress.json 中找到了正确的变量,但问题仍然是一样的。
    • 谢谢 - 所以代码有问题,没有导入。 :)
    • @Piecho3a,你没有导入什么?我有同样的问题。
    【解决方案2】:

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

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

    //cypress.env.js
    {
        "user": {
            "username": "Jane",
            "password": "SuperPassword",
            "someOtherData": "veryImportantData"
        }
    }
    

    然后

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

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

    【讨论】:

    • 这对我不起作用。我得到 - 无法读取未定义的属性“信号”
    • @SteveTomlin 你能告诉我你的 cypress.env.json 文件吗?
    • 没关系,我发现它崩溃的原因是因为我在顶部导入了 Cypress。我删除了导入,现在它可以工作了
    • @SteveTomlin 超级 :)
    猜你喜欢
    • 2018-04-26
    • 2011-09-27
    • 2019-04-18
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多