我需要持久保存一次赛普拉斯测试中设置的变量,直到后续测试。使用全局变量或通过使用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()块内分配的全局变量。为什么价值会丢失,如何保持价值不变?