Хорошо,
я знаю, что это упоминается в руководстве, и, вероятно, должен делать с 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()