Mocha测试中before或it块执行失败时after块是否仍会执行?
Mocha 测试钩子执行问题解答
你给出的测试代码如下(注:原代码存在语法疏漏,标准Mocha写法中describe第二个参数应为回调函数,已修正格式方便参考):
describe("create a user", () => { before("login to system", () => {}) it("execute assertion", () => {}) after("delete the user", () => {}) })
结论
同一个describe作用域下的after块,无论before块执行失败还是it测试用例执行失败,都会正常执行。
补充说明
after钩子的设计定位就是测试套件级别的统一清理工具,无论套件内的前置操作、测试用例是否运行成功,都会触发,避免产生测试残留数据。- 仅当测试进程被主动终止(比如代码中调用
process.exit()、进程被外部信号强制杀死)时,after块才不会执行。 - 如果需要实现「仅前置步骤和测试用例全部成功才执行清理」的逻辑,需要自行在代码中添加运行状态变量做判断,不能依赖
after的默认执行逻辑。
内容的提问来源于stack exchange,提问作者Analyst
相关产品推荐
相关产品推荐

