Функция тестирования, вызываемая в объектном __init__

У меня есть класс, который выглядит так:

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 в классе, но я не уверен, каким будет наилучший / самый питонский способ сделать это. Я понимаю, что могу создать объект и смоделировать различные функции, вызываемые в 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 ответ

Если вы действительно хотите проверить build_connection без инстанциирования экземпляра класса, издевайтесь над самим объектом.

mock_instance = mock.Mock()
# set up necessary attributes here
myClass.build_connection(mock_instance)
# examine mock_instance
Другие вопросы по тегам