Функция тестирования, вызываемая в объектном __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