在测试中保持动态变量

时间:2019-09-06 15:45:32

标签: javascript cypress

我需要持久保存一次赛普拉斯测试中设置的变量,直到后续测试。使用全局变量或通过使用Cypress.env设置环境变量似乎不太可能。如果在test1中设置了值,则该范围在test2中丢失,并且该值将为空。

// test.spec.js

describe("Login to site", () => {

let _magicCode

context('Signup', () => {
    it("Should go through the signup flow", function () {
        cy.visit(Cypress.env('xDevUrl') + '/create-account')
        cy.get(MAGIC_CODE_FIELD)
            .invoke('val')
            .then(magicCode => {
                   Cypress.env('magicCode', magicCode)
                   _magicCode = Cypress.env('magicCode')

                   cy.log(Cypress.env('magicCode'))

                   //result: 12345

                   cy.log(_magicCode)

                   //result: 12345
            })
    })

    it("persist magicCode value please", function () {
        cy.log(Cypress.env('magicCode'))

        //result: null

        cy.log(_magicCode)

        //result: null
      })
   })
})

// Cypress.json

{
"baseUrl": "https://site1.test.dev/",
  "env": {
   "magicCode": ""
    }
 }

我希望magicCode的值可以在测试中保持不变,因为它是在.then()块内分配的全局变量。为什么价值会丢失,如何保持价值不变?

0 个答案:

没有答案