我使用retry
-选项运行测试。如果afterEach
-块出现问题,则只有it
-块和afterEach
-块在重试,而不是beforeEach
-块。在我看来,这是古玩的行为。那么,这是一个错误还是一种故意的行为呢?
第页。S.:我用的是Cypress 7.7
使用一个简化的测试,我在重试时执行beforeEach()
。
let retry = 0;
describe('', () => {
beforeEach(() => {
console.log('beforeEach', retry)
})
afterEach(() => {
console.log('afterEach', retry)
retry = retry +1;
if (retry === 1) {
console.log('failing')
throw 'failed in afterEach'
}
})
it('test1', () => {
console.log('test1', retry)
expect(true).to.eq(true)
})
it('test2', () => {
console.log('test2', retry)
expect(true).to.eq(true)
})
})
控制台日志
beforeEach 0
test1 0
afterEach 0
failing // first afterEach fails
beforeEach 1 // retry attempt
test1 1
afterEach 1
beforeEach 2
test2 2
afterEach 2
你能添加可能影响这个结果的细节吗?
您可以找到Cypress Test Retries 的详细信息
当每次测试再次运行时,还会重新运行以下挂钩:beforeEach每次之后
但是,前后挂钩中的失败不会触发重试