Python TestCase中的非测试方法

vic*_*pos 37 python unit-testing

好的,因为Google搜索在一段时间内没有帮助我(即使使用正确的关键字).

我有一个从TestCase扩展的类,其中我想要一些不会作为测试的一部分执行的辅助方法,它们将用于生成一些模拟对象等,几乎任何测试的辅助方法.

我知道我可以使用@skip装饰器,所以unittest没有运行特定的测试方法,但我认为这是一个丑陋的黑客用于我的目的,任何提示?

在此先感谢社区:D

J L*_*erg 55

我相信你不必做任何事情.你的助手方法应该不是从一开始test_.

  • 来自Java背景:我不明白为什么unittest没有使用@decorator进行测试,就像JUnit 4那样,它的可读性和干净性只比名称上的一些约定要好...... (6认同)
  • @piva:请阅读http://docs.python.org/library/unittest.html上的单元测试文档,特别是“ TestLoader使用'test'方法名称前缀来自动识别测试方法。” (2认同)

小智 5

unittest 将执行的唯一方法 [1] 是、以、 和[2]setUp开头的任何方法(按顺序)。您可以创建辅助方法并调用除这三件事之外的任何内容,并且它们不会由单元测试执行。testtearDown

您可以认为setUp__init__如果您要生成多个测试使用的模拟对象,请在setUp.

def setUp(self):
    self.mock_obj = MockObj()
Run Code Online (Sandbox Code Playgroud)

[1]:这并不完全正确,但这些是编写测试时可以重点关注的主要 3 组方法。

[2]:由于遗留原因,unittest 将执行 和test_footestFoo但这test_foo是目前的首选样式。setUp并且tearDown应该这样出现。