addCleanup与tearDown的区别

40

最近,Ned Batchelder在他在PyCon 2016的演讲中提到:

如果你正在使用unittest编写测试,一定要使用addCleanup,它比tearDown好得多。

到目前为止,我从未使用过addCleanup(),而是习惯于使用setUp()/tearDown()这对方法来进行测试的“设置”和“清除”阶段。

那么,为什么我应该改用addCleanup()而不是tearDown()呢?


最近在Python unittest with Robert Collins播客中也有讨论。

3个回答

49
根据 addCleanup 文档:

清理项会被调用,即使 setUp 失败(与 tearDown 不同)。

addCleanup 可以用于注册多个函数,因此您可以使用单独的函数来清理每个资源。这将使您的代码更具可重用性和模块化。

6

addCleanup() 方法会在其中一个方法出现错误时仍然执行,也会在 setUp() 出现错误时执行。你应该考虑使用 pytest


4
< p > addCleanup 的另一个好处是它能够按照预期工作。

例如,如果你在setUp函数中调用它,那么所有的测试方法都将在最后调用清理函数。

如果你在测试方法中调用它,那么只有这个方法会调用清理函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接