Макет патча для всей тестовой сессииPython

Программы на Python
Ответить
Гость
 Макет патча для всей тестовой сессии

Сообщение Гость »


tl;dr как сделать так, чтобы mock.patch для @classmethod длился весь сеанс тестирования а не только внутри области с или области действия функции?

Я хочу имитировать исправление метода класса. Однако я хотел бы запускать patch.object один раз, а не один раз в каждом тесте.

В настоящее время мне нужно дважды вызвать patch.object

класс MyClass(): @classmethod защита print_hello (cls): print("привет от настоящего MyClass.print_hello") защита do_something(self): проходить защита макета_print_hello (_cls): print("привет от пропатченного make_print_hello") класс TestMyClass(unittest.TestCase): защита test_init (сам): с помощьюock.patch.object(MyClass, "print_hello", new_callable=mock_print_hello) в качестве патча: МойКласс.print_hello() Мои занятия() защита test_do_something(self): с помощьюock.patch.object(MyClass, "print_hello", new_callable=mock_print_hello) в качестве патча: МойКласс.print_hello() МойКласс().do_something() Однако я хотел бы вызывать patch.object только один раз:

класс MyClass(): @classmethod защита print_hello(cls): print("привет от настоящего MyClass.print_hello") защита do_something(self): проходить защита макета_print_hello (_cls): print("привет от пропатченного make_print_hello") класс TestMyClass(unittest.TestCase): @classmethod защита setUpClass(cls): # этот патч не останется после возврата setUpClass patch =ock.patch.object(MyClass, "print_hello", new_callable=mock_print_hello) защита test_init (сам): # это вызывает настоящий MyClass.print_hello, а не макет_print_hello МойКласс.print_hello() Мои занятия() защита test_do_something(self): # это вызывает настоящий MyClass.print_hello, а не макет_print_hello МойКласс.print_hello() МойКласс().do_something() На практике исправление MyClass.new внутри setUpClass не выходит за рамки функции. Другими словами, test_init и test_do_something не вызывают mock_print_hello, они вызывают MyClass.print_hello. Как сделать так, чтобы макет патча не ограничивался одной функцией?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»