在对象的__init__中调用的测试函数

时间:2015-08-05 18:22:25

标签: python mocking python-mock

我有一个看起来像这样的课程:

class myClass(object):
     def __init__(self, arg1):
         self.arg1 = arg1
         self.build_connection()

     def build_connection(self):
         if self.arg1 != 'foo':
             raise Exception('ohno')
         <more code that could potentially raise an exception>

我想在类中测试build_connection函数,但我不确定最好的方法/大多数Pythonic方法是做什么的。我意识到我可以创建对象并模拟build_connection中调用的各种函数,但我想知道是否有一种方法可以独立于正在创建的对象来测试build_connection,即我不想做这样的事情:

 try:
     class = myClass('foo')
 except Exception:
     self.fail('should have initialized correctly')

我宁愿做更多这样的事情:

 myclass = myClass('bar')
 # mock various properties in build_connection
 myclass.build_connection()

1 个答案:

答案 0 :(得分:1)

如果你真的想在没有实例化类的情况下测试build_connection,那就模拟对象本身。

mock_instance = mock.Mock()
# set up necessary attributes here
myClass.build_connection(mock_instance)
# examine mock_instance