Eu tenho um conjunto de módulos até mais ou menos o seguinte:
# 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()
Como por esta resposta que eu fiz certo monkeypatch o real importado instância da função. Qualquer outro caminho que lança um "does not exist on module"
erro.
No entanto, quando eu executar o teste, eu bati um erro, porque a função original generate
está sendo chamado, apesar de ser monkeypatched.
Eu não consigo descobrir por que esse patch não vai ficar do jeito que eu esperava também.
Espero que este teste para imprimir "hello!".