我有一个带有多个测试的TestCase
,需要在每个测试结束时断言几个条件(每个测试都相同)。将这些断言添加到tearDown()
方法中可以吗?或者这是一个坏习惯,因为它们没有"清理"任何东西?
做这件事的正确方法是什么?
在tearDown
中断言某些内容意味着您需要小心,在实际断言之前完成所有清理,否则如果assert语句失败并引发,则可能无法调用清理代码。
如果断言只是一行,那么在每个测试方法中都有它可能是可以的,如果它不仅仅是一种可能性,那么有一个特定的方法是可能的——该方法不应该是自己的测试,即不被测试框架识别为测试。使用方法decorator或类decorator也可能是一种替代方法。
总的来说,tearDown
不应该做任何测试,显式比隐式更好。
嗯,我以前从未见过这个。就我个人而言,我不会这么做,因为它不属于那里。我会通过一个装饰器来完成它,它在最后为你做断言。然后,只需修饰您确实希望拥有这些断言的测试函数。
关于python装饰器的优秀介绍,请参阅这个问题的答案