Python TestCase中的非测试方法
好的,最近我在谷歌搜索上找不到帮助(即使我用了正确的关键词)。
我有一个类是从TestCase扩展出来的,我想在里面添加一些辅助方法,这些方法不会作为测试的一部分被执行,它们主要用来生成一些模拟对象等等,几乎可以用于任何测试的辅助功能。
我知道我可以使用@skip装饰器,这样unittest就不会运行某个特定的测试方法,但我觉得这样做有点像是个丑陋的解决办法,有没有其他建议呢?
提前谢谢大家,社区 :D
3 个回答
3
测试运行器只会直接执行那些以 test
开头的方法,所以你只需要确保你的辅助方法的名字不要以 test
开头就可以了。
5
unittest这个测试框架只会执行三种方法:setUp
、以test
开头的方法,以及tearDown
,执行顺序是这样的。你可以创建一些辅助方法,给它们起任何名字,只要不是这三种名字,它们就不会被unittest执行。
可以把setUp
想象成__init__
:如果你需要生成一些在多个测试中使用的假对象,就可以在setUp
里创建它们。
def setUp(self):
self.mock_obj = MockObj()
[1]: 这并不是完全正确,但这三种方法是你在写测试时可以重点关注的主要类型。
[2]: 出于历史原因,unittest会执行test_foo
和testFoo
这两种写法,但现在更推荐使用test_foo
这种风格。setUp
和tearDown
也应该保持这样的写法。
104
我觉得你不需要做什么特别的事情。你的辅助方法(也就是帮助你完成某些任务的函数)只要不以 test_
开头就可以了。