赛普拉斯 |使用在 beforeEach 钩子中声明的变量
Cypress | using variables declared in beforeEach hook
在我的 e2e 测试中,我在 beforeEach 挂钩中声明了一些变量,以便稍后在测试中使用它们。
当前解决方案:
beforeEach(() => {
// some variables are declared here
// using cy.wrap only for presentation purpose
cy.wrap({ foo: 1 })
.as('foo')
cy.wrap({ bar: 2 })
.as('bar')
})
it('some test', () => {
cy.get('@foo')
.then((foo) => {
cy.get('@bar')
.then((bar) => {
// here I have access to these variables
})
})
})
这很好用,但是如果我有 10 个变量要传递给测试呢?然后我有 10 个嵌套 .then
看起来不太好。
我知道我可以在 context
中使用 let
声明这些变量,然后在测试中访问它们,但不推荐在 Cypress 中处理变量。
let globalFoo
let globalBar
beforeEach(() => {
// some variables are declared here
// using cy.wrap only for presentation purpose
cy.wrap({ foo: 1 })
.then((foo) => {
globalFoo = foo
})
cy.wrap({ bar: 2 })
.then((bar) => {
globalBar = bar
})
})
it('some test', () => {
// now I have access to them too
cy.wrap(globalBar)
cy.wrap(globalFoo)
})
有没有什么方法可以将许多变量从 beforeEach 挂钩传递给测试并保持干净的代码?
您可以使用 this.*
表示法访问 cypress 变量而无需 then 回调:
beforeEach(() => {
// some variables are declared here
// using cy.wrap only for presentation purpose
cy.wrap({ foo: 1 })
.as('foo')
cy.wrap({ bar: 2 })
.as('bar')
})
it('some test', function() {
// here I have access to these variables
console.log(this.foo + this.bar)
})
请注意,在 it
语句中使用了函数回调,因为这在箭头回调 (() => {}
)
中不起作用
在我的 e2e 测试中,我在 beforeEach 挂钩中声明了一些变量,以便稍后在测试中使用它们。
当前解决方案:
beforeEach(() => {
// some variables are declared here
// using cy.wrap only for presentation purpose
cy.wrap({ foo: 1 })
.as('foo')
cy.wrap({ bar: 2 })
.as('bar')
})
it('some test', () => {
cy.get('@foo')
.then((foo) => {
cy.get('@bar')
.then((bar) => {
// here I have access to these variables
})
})
})
这很好用,但是如果我有 10 个变量要传递给测试呢?然后我有 10 个嵌套 .then
看起来不太好。
我知道我可以在 context
中使用 let
声明这些变量,然后在测试中访问它们,但不推荐在 Cypress 中处理变量。
let globalFoo
let globalBar
beforeEach(() => {
// some variables are declared here
// using cy.wrap only for presentation purpose
cy.wrap({ foo: 1 })
.then((foo) => {
globalFoo = foo
})
cy.wrap({ bar: 2 })
.then((bar) => {
globalBar = bar
})
})
it('some test', () => {
// now I have access to them too
cy.wrap(globalBar)
cy.wrap(globalFoo)
})
有没有什么方法可以将许多变量从 beforeEach 挂钩传递给测试并保持干净的代码?
您可以使用 this.*
表示法访问 cypress 变量而无需 then 回调:
beforeEach(() => {
// some variables are declared here
// using cy.wrap only for presentation purpose
cy.wrap({ foo: 1 })
.as('foo')
cy.wrap({ bar: 2 })
.as('bar')
})
it('some test', function() {
// here I have access to these variables
console.log(this.foo + this.bar)
})
请注意,在 it
语句中使用了函数回调,因为这在箭头回调 (() => {}
)