OK,
Я знаю, что это упоминается в руководстве и, вероятно, связано с 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()
Теперь я хочу unit test класс UUT
и высмеять ClassToPatch
. Знание класса UUT
будет создавать экземпляры только двух объектов ClassToPatch
, я хочу, чтобы оболочка Mock возвращала новый объект Mock для каждого экземпляра, поэтому я могу позже утверждать вызовы по отдельности.
Как достичь этого, используя декоратор @patch
в тестовом примере? А именно, как исправить следующий пример кода?
class TestCase1(unittest.TestCase):
@patch('classToPatch.ClassToPatch',autospec=True)
def test_1(self,mock1,mock2):
_assert_stuff()