ОК,
Я знаю, что это упоминается в руководствеи, вероятно, имеет отношение к side_effect
и/или return_value
, но простой прямой пример мне очень поможет.
У меня есть:
class ClassToPatch():
def __init__(self, *args):
_do_some_init_stuff()
def some_func():
_do_stuff()
class UUT():
def __init__(self, *args)
resource_1 = ClassToPatch()
resource_2 = ClassToPatch()
Теперь я хочу провести модульное тестирование класса UUT
и смоделировать ClassToPatch
. Зная, что класс UUT
создаст ровно два объекта ClassToPatch
, я хочу, чтобы платформа Mock возвращала новый объект Mock для каждого экземпляра, чтобы позже я мог утверждать вызовы для каждого по отдельности.
Как мне добиться этого с помощью декоратора @patch
в тестовом примере? А именно, как исправить следующий пример кода?
class TestCase1(unittest.TestCase):
@patch('classToPatch.ClassToPatch',autospec=True)
def test_1(self,mock1,mock2):
_assert_stuff()