我目前有
describeA();
describeB();
A和B都具有it()测试。 如果B中有任何“失败”的地方,有没有办法在describeB()after()函数中调用describeA再次运行? 因此,在describeB之后的函数中,它将具有:
after(){
if(haveFailedTests)
// how to call run describeA();
}
答案 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
包装函数调用,并在失败时重新运行。