Я пытаюсь проверить класс, который импортирует функцию из какого-то другого модуля. Я хочу издеваться над вызовом этой функции. Хотя я не могу понять, как.
please_configure.py
from src.messages.create import create_please
class PleaseConfigure():
def __init__():
self._call = { "create_please": create_please }
def handle_call(msg):
self._call[msg["method"]](msg["args"])
create.py
def create_please(args):
# does something not so important
test_please_configure.py
from src.consumers.please_configure import PleaseConfigure
@patch.object(PleaseConfigure, "_call")
def test_please_configure_success(mocked_call):
cf = PleaseConfigure()
# want to test cf.handle_call()
I упростили вышеупомянутые классы до такой степени, что они, очевидно, больше не делают много, но это правильная иерархия импорта между 3 файлами. Как я должен издеваться над функцией в словаре _call в случаях PleaseConfigure?
В test_please_configure_success я пробовал варианты в следующих случаях:
@patch.object(PleaseConfigure, "_call")
@patch.object(PleaseConfigure, "create_please")
@patch.object(PleaseConfigure, "src.messages.create")
@patch.object(PleaseConfigure, "src.messages.create.create")
Я также пытался делать подобное с помощью контекстных менеджеров. Кажется, он просто не работает и становится довольно разочаровывающим. Спасибо за любую помощь в этой функции, чтобы я мог протестировать класс PleaseConfigure.