只重试它-如果afterEach块中出现故障,则重试afterEah块



我使用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每次之后

但是,前后挂钩中的失败不会触发重试

最新更新