Am un modul stabilit la aproximativ după cum urmează:
# 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()
Ca pe acest răspuns m-am asigurat că monkeypatch efectiv importate exemplu de funcție. Orice altă cale aruncă o "does not exist on module"
eroare.
Cu toate acestea, atunci când am rula testul l-am lovit o eroare, pentru că funcția originală generate
este numit, în ciuda faptului că monkeypatched.
Nu-mi dau seama de ce acest patch nu se va lipi asa cum cred eu de asemenea.
M-aș aștepta la acest test pentru a imprima "buna ziua!".