Это то, что должно работать:
@mock.patch('path_to_class_to_test.ClassThatNeedsMocking')
def test_method(patched):
foo = ImplementingClass()
foo.setup()
patched.return_value.functionCall.assert_called_once()
Во-первых, вам нужно пропатчить класс импортируемый в классе для тестирования (см. , где патчить ) , При использовании import from
класс назначается новому объекту, который находится в модуле using, и это тот, который должен быть исправлен.
Во-вторых, вам нужен только пропатченный класс - не нужно повторять макет или запускать / останавливать патчер. Вы можете использовать декоратор (как я) или вызов функции, чтобы получить его. Исправление отменяется, как только вы выходите из области действия функции.
В-третьих, вы исправляете класс, но функция вызывается классом instance , который равен patched.return_value
, поэтому Вы должны это проверить.