Development
pytest-Fixture-Abhängigkeitsgraph- und mock.patch-Leck-Detektor
Regeln nach der offiziellen pytest-Dokumentation: Scope-Reihenfolge session > package > module > class > function; eine breit gültige Fixture, die von einer engeren abhängt, löst beim Sammeln ScopeMismatch aus; gleichnamige Fixtures werden vom Test nach außen aufgelöst — der tiefste conftest gewinnt. Leck-Erkennung: Eingebaute Fixtures (monkeypatch/capsys/tmp_path…) sind funktionalscopig, ihr Undo passiert nur auf dieser Ebene — ihre Verwendung in module/session-Fixtures hält den Patch die ganze Session aktiv (Problemtyp pytest-mock Issue #84); patcher.start() ohne .stop() lebt bis zum Prozessende; with mock.patch über ein yield hinaus in breitem Scope lässt alle Tests das gepatchte Ziel sehen. Der Parser ist ein leichtgewichtiger Python-Scanner (Strings/Triple-Quotes/Kommentare korrekt), ohne Python-Runtime. Trennen Sie mehrere Dateien mit „# --- file: tests/unit/conftest.py ---“-Markern.
Schnellstart
Rufen Sie dieses Werkzeug aus Ihrem Code in drei Sprachen auf.
# 1) Request a presigned URL → returns { uploadUrl, storageKey }
curl -X POST 'https://api.elysiatools.com/api/upload/presign/pytest-conftest-fixture-dependency-graph-and-mock-patch-leak-detector' \
-H 'Content-Type: application/json' \
-d '{"filename":"pythonFile.ext","contentType":"application/octet-stream","size":12345}'
# 2) PUT the file bytes directly to the presigned uploadUrl
curl -X PUT '<presigned uploadUrl>' \
--data-binary @/path/to/file.ext
# 3) Call the tool, passing the returned storageKey for each file field
curl -X POST 'https://api.elysiatools.com/de/api/tools/pytest-conftest-fixture-dependency-graph-and-mock-patch-leak-detector' \
-F 'sourceInput=# --- file: conftest.py ---
import pytest
from unittest import mock
@pytest.fixture(scope="session")
def db_engine():
engine = {"url": "sqlite://"}
yield engine
engine.clear()
@pytest.fixture(scope="session")
def patched_auth():
patcher = mock.patch("auth.verify_token", return_value=True)
patcher.start()
return None
@pytest.fixture
def api_client(db_engine, patched_auth):
return {"db": db_engine}
# --- file: tests/unit/conftest.py ---
import pytest
@pytest.fixture(scope="module")
def fake_auth(monkeypatch):
monkeypatch.setattr("auth.verify_token", lambda t: True)
return True
@pytest.fixture
def api_client(fake_auth):
return {"override": True}' \
-F 'pythonFile=uploads/2026/01/01/your-tool-1700000000000-abc123.ext' \
-F 'includeBuiltinGraph=true'