Макет Python не подтверждает вызов, когда целевой метод вызывается внутри другого метода ⇐ Python

Программы на Python
Anonymous
Макет Python не подтверждает вызов, когда целевой метод вызывается внутри другого метода

Сообщение Anonymous »

Мне не удается выполнить базовую функцию Assert_ Called() в классе, где некоторые методы вызывают внутренние методы.
Пример кода:

Код: Выделить всё

from unittest.mock import Mock

class Foo:
def print1(self) -> None:
print("print1 called")  # I see this print message
self.print2()

def print2(self) -> None:
print("print2 called")  # I see this print message

foo = Foo()
foo_mock = Mock(wraps=foo)
foo_mock.print1()
foo_mock.print1.assert_called()  # OK
foo_mock.print2.assert_called()  # NOT OK
Похоже, проблема в том, что в print1(self) экземпляр self имеет тип Foo, а не Mock . Вот почему нет никаких регистров для макетного вызова print2.
Это ожидаемое поведение? Обычно self привязан к вызывающему объекту. Это означает, что должен быть передан экземпляр типа Mock. Я предполагаю, что проблема в том, что экземпляр уже был создан, и поэтому все методы были привязаны к немакетированному экземпляру. Я ожидаю, что это будет изменено __init__ Mock.
Есть ли какое-нибудь решение этой проблемы? Я делаю что-то не так?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ther-metho

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