Python TestCase中的非测试方法

71 投票
3 回答
22681 浏览
提问于 2025-04-16 22:59

好的,最近我在谷歌搜索上找不到帮助(即使我用了正确的关键词)。

我有一个类是从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_footestFoo这两种写法,但现在更推荐使用test_foo这种风格。setUptearDown也应该保持这样的写法。

104

我觉得你不需要做什么特别的事情。你的辅助方法(也就是帮助你完成某些任务的函数)只要不以 test_ 开头就可以了。

撰写回答