首页 > 解决方案 > 如果 afterEach-block 中出现问题,则仅重试 it- 和 afterEach-block

问题描述

我使用retry-option 运行测试。如果 -block 出现问题,afterEach则只有it-block 和afterEach-block 正在重试,而不是beforeEach-block。在我看来,这是古玩行为。那么这是错误还是故意行为?

PS:我使用的是赛普拉斯 7.7

标签: cypress

解决方案


使用简化的测试,我可以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  

您能否添加可能影响此结果的详细信息?


推荐阅读