在单元测试的tearDown方法中使用assert语句是否可行?

9

我有一个包含多个测试用例的TestCase,每次测试结束后需要断言几个条件(这些条件对于每个测试都是相同的)。将这些断言添加到tearDown()方法中是否可以?或者说这样做是一种不好的习惯,因为它们并没有清理任何东西?

什么是正确的做法?


每个测试结束时都需要断言吗?还是可以在一个或几个测试中进行测试? - Simeon Visser
是的,确实非常必要。 - knaperek
2个回答

8
在你的tearDown中断言某些内容意味着你需要小心,在实际断言之前,确保所有清理工作都已完成,否则如果断言语句失败并引发异常,则清理代码可能不会被调用。
如果assert只有一行,那么在每个测试方法中都可以使用,但如果多于一行,则可以考虑使用一个特定的方法-该方法不应是自己的测试,即不被测试框架识别。使用方法装饰器或类装饰器也可能是一种选择。
总体而言,tearDown不应进行任何测试,显式比隐式更好。

1

嗯,我以前从未见过这种情况。个人认为不应该这样做,因为它不属于那里。我会通过一个装饰器来实现,在最后进行断言。然后只需装饰您想要具有这些断言的测试函数即可。

关于Python装饰器的优秀介绍,请参见此问题的答案


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