Я хотел бы протестировать класс с функцией, в которой есть оператор with
:
func_to_test():
....
with self.__elastic_generator.get() as es:
print 'about to use the es connection....'
Итак, я издевался над elstic_generator, и я высмеивал его get
функция при создании тестируемого класса:
elastic_gen = mock.Mock()
elstic_gen.get = mock.Mock()
elastic_gen.get.side_effect = ['mocked elastic connection']
tested_class = TestedClass(elastic_gen)
tested_class.func_to_test()
Но по какой-то причине это не работает при использовании оператора with
.
Однако, если вы получаете соединение без использования with
, вот так:
x = self.__elastic_generator.get()
Тогда все работает нормально, и я получаю x = 'mocked elastic connection'
.
Так что я думаю, что проблема связана с некоторыми вызовами функций, которые выполняются при использовании with
, и что я не высмеиваю эти функции.
Может кто-нибудь объяснить, что происходит под капотом и что еще я должен издеваться, чтобы иметь возможность проверить это с помощью оператора with
?
Спасибо.