addCleanup vs tearDown

时间:2016-05-30 21:50:19

标签: python unit-testing python-unittest

最近,在his talk at PyCon 2016期间,Ned Batchelder指出:

  

如果您使用unittest编写测试,请务必使用   addCleanup,它比tearDown好得多。

到目前为止,我从未使用addCleanup()并习惯了setUp() / tearDown()对方法来测试“设置”和“拆除”阶段。

我为什么要切换到addCleanup()而不是tearDown()

最近还在Python unittest with Robert Collins播客中进行了讨论。

3 个答案:

答案 0 :(得分:33)

根据addCleanup doc string

  

即使setUp失败也会调用清理项目(与tearDown不同)

addCleanup可用于注册多个函数,因此您可以使用 您希望清理的每个资源的单独功能。那会让你的 代码更可重用/模块化。

答案 1 :(得分:5)

addCleanup()方法即使其中一个失败也会运行,即使setUp()失败也会运行。您还应该考虑使用pytest

答案 2 :(得分:2)

关于addCleanup的另一个好处是,它只是按照您的预期运作。

例如,如果您在setUp函数中调用它,那么所有测试方法最终都会调用清理函数。

如果在测试方法中调用它,则只有此方法才会调用清理函数。