如果第二次失败,请重新运行第一个测试,摩卡,javascript

时间:2019-07-18 08:13:03

标签: javascript testing mocha

我目前有

describeA();
describeB();

A和B都具有it()测试。 如果B中有任何“失败”的地方,有没有办法在describeB()after()函数中调用describeA再次运行? 因此,在describeB之后的函数中,它将具有:

after(){

if(haveFailedTests)

// how to call run describeA();
}

1 个答案:

答案 0 :(得分:0)

您可以像这样覆盖所有单个测试的it功能:

export function it(test: Function, retryCount: number = 4): (this: ITestCallbackContext, done: MochaDone) => any {
  return function() {
    for (let index = 0; index < retryCount; index++) {
      try {
        return test()
      } catch (error) {
        ;(browser as any).logger.info(
          `retry number ${index + 1}/${retryCount} for step "${error.message}" on it "${
            this.test.title
          }" and browser "${(browser.capabilities.browserName || '').toString()}"`
        )
      }
    }
    return test()
  }
}

使用打字稿,但基本思想仍然存在,用try/catch包装函数调用,并在失败时重新运行。