Kabaca aşağıdaki gibi ayarlanmış bir modülüm var:
# 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()
Bu cevaba göre, işlevin gerçek içe aktarılan örneğini monkeypatch emin oldum. Başka bir yol atar "does not exist on module"
hata.
Ancak testi çalıştırdığımda bir hataya çarptım, çünkü orijinal işlev generate
adı, monkeypatched olmasına rağmen ediliyor.
Bu yamanın neden beklediğim gibi yapışmayacağını da anlayamıyorum.
Bu test için Alo Yazdır "beklerdim!".