我正在用 cypress 做一些 e2e 测试,遇到了 before hooks 的问题。我正在使用相同的测试但不同的变量测试多个页面。因此,我将我的测试包装在一个函数中,这样我就可以为我需要运行的每个测试循环遍历该函数。在我的函数顶部,我有一个 before 钩子,它应该在函数中的所有测试之前执行一次,但它会在函数的每次迭代中执行。即运行我的函数 10 次导致 before 钩子在我每次运行我的函数时运行 10 次。
这是一个 MRE,其结构与我运行测试的方式相同:
function runTests(index) {
before(() => {
cy.visit('https://google.com')
})
describe('Tests some stuff', () => {
describe(('Tests some stuff'), () => {
it('Tests some stuff', () => {
cy.log(index)
})
})
})
}
for (let i = 0; i < 10; i++) {
runTests(i)
}
我期待它在每次测试前访问 google 一次,然后打印出函数的当前迭代。相反,它在打印迭代之前访问了 google 10 次。