У меня есть модуль, настроенный примерно следующим образом:
# foo.py
def generate_things_based_on_other_things():
# some nasty things here
# bar.py
from foo import generate_things_based_on_other_things as generate
def coo():
generate()
# conftest.py
import pytest
@pytest.fixture(autouse=True)
def patch_generate(monkeypatch):
def mock_generate():
print("hello!")
monkeypatch.setattr("app.bar.generate", mock_generate)
# test_bar.py
from bar import coo
def test_coo():
coo()
В соответствии с этим ответом я позаботился о том, чтобы сопоставить фактический импортированный экземпляр функции. Любой другой путь бросает "does not exist on module"
ошибка.
Однако, когда я запускаю тест, я сталкиваюсь с ошибкой, потому что исходная функция generate
вызывается, несмотря на то, что это обезьяна.
Я тоже не могу понять, почему этот патч не будет держаться так, как я ожидаю.
Я бы ожидал, что этот тест напечатает "привет!".