Mám modul nastavit zhruba takto:
# 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()
Jak na tuto odpověď udělal jsem určitě monkeypatch skutečné dovezené instanci funkce. Jinou cestu hodí "does not exist on module"
chyba.
Nicméně, když jsem spustit test jsem narazila chybu, protože původní funkce generate
je volána, i přes to, že monkeypatched.
Nemůžu přijít na to, proč tento patch nebude držet tak, jak očekávám, že to taky.
Já bych očekávat, že tento test print "ahoj!".