我有一个TestCase
有多个测试,需要在每个测试结束时断言一些条件(每个测试都相同)。将这些断言添加到tearDown()
方法中是否可以,或者这是一个坏习惯,因为它们没有“清理”任何东西?
这样做的正确方法是什么?
答案 0 :(得分:4)
在tearDown
中断言某些内容意味着您需要注意在实际断言之前完成所有清理工作,否则如果断言语句失败并且提升,则可能无法调用清理代码。
如果断言只是一行,那么在每个测试方法中都可以使用它,如果它超过具有特定方法的可能性 - 该方法不应该是它自己的测试,即不能识别作为测试框架的测试。使用方法装饰器或类装饰器也可以是替代方案。
总的来说,tearDown
不应该进行任何测试,而且显式优于隐式。
答案 1 :(得分:1)
我以前从未见过这个。就个人而言,我不会这样做,因为它不属于那里。我会通过装饰器来做到这一点,最后为你做断言。然后只需装饰你想要拥有这些断言的测试函数。
有关python装饰器的精彩介绍,请参阅the answers to this question