# 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.

> Kanonische Seite: https://elysiatools.com/de/tools/pytest-conftest-fixture-dependency-graph-and-mock-patch-leak-detector

- **Kategorie:** Development

- **Schlagwörter:** pytest, conftest, Fixture, Abhängigkeitsgraph, mock.patch-Leck, monkeypatch, Scope-Mismatch, Session-Fixture, Test-Verschmutzung, statische Analyse, Python-Tests, Fixture-Scope

## Überblick

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.

## Eingaben

- **Python-Quelltexte (conftest-Kette)** (textarea): # --- file: conftest.py --- import pytest @pytest.fixture(scope="session") def db(): yield 1 …
- **Python-Datei (optional, .py/.txt)** (file)
- **Eingebaute Fixtures im Graphen zeigen** (checkbox)

## Wann verwenden

- Vor der Ausführung umfangreicher Test-Suiten zur Vermeidung von ScopeMismatch-Abbrüchen während der Sammlungsphase.
- Bei unzuverlässigen oder flaky Tests, die durch ungestoppte mock.patch-Aufrufe oder geteilte Session-Zustände beeinflusst werden.
- Zur Überprüfung komplexer, verschachtelter conftest.py-Hierarchien auf unerwünschte Fixture-Overrides und Scope-Verletzungen.

## Funktionsweise

- Der Parser scannt Python-Dateien oder Textabschnitte mit '# --- file: ... ---'-Markern nach Fixture-Dekorationen, Scopes und Mock-Aufrufen.
- Das System prüft die Hierarchie (session > package > module > class > function) und deckt ungültige Abhängigkeiten breiter Scopes von engeren Scopes auf.
- Muster wie patcher.start() ohne korrespondierendes stop(), monkeypatch in Session- oder Module-Scopes sowie offene with-Blöcke über yield werden markiert.
- Es wird eine Fixture-Tabelle, eine Liste nach Schweregrad geordneter Befunde und ein ebenenbasierter SVG-Abhängigkeitsgraph ausgegeben.

## Anwendungsfälle

- Prüfung von Session-Fixtures auf persistente Mock-Lecks und fehlende Teardown-Bereinigungen.
- Transparente Darstellung verschachtelter Fixture-Overrides in Multi-Package-Teststrukturen.
- Identifikation von Scope-Inkompatibilitäten vor der Integration in CI/CD-Pipelines.

## Häufig gestellte Fragen

### Benötigt das Tool eine installierte Python-Laufzeitumgebung?

Nein, die Analyse erfolgt rein statisch über einen leichtgewichtigen Python-Quelltext-Scanner direkt im Browser.

### Wie analysiere ich mehrere conftest.py-Dateien gleichzeitig?

Trennen Sie die Inhalte der einzelnen Dateien im Eingabefeld jeweils mit dem Kommentar '# --- file: pfad/zur/conftest.py ---'.

### Warum wird monkeypatch in einer module- oder session-Fixture als Fehler gewertet?

Eingebaute Fixtures wie monkeypatch sind funktionsgebunden; ihr Teardown greift nicht in breiten Scopes, wodurch Patches die gesamte Session kontaminieren.

### Welche Scope-Reihenfolge legt der Detektor zugrunde?

Er verwendet die offizielle pytest-Reihenfolge: session > package > module > class > function.

### Kann eine einzelne Python-Datei hochgeladen werden?

Ja, Sie können eine .py- oder .txt-Datei mit einer Dateigröße von bis zu 5 MB direkt über das Datei-Feld hochladen.

## Ähnliche Tools

- [Stryd Critical-Power- und W′bal-Rekonstruktor fürs Laufen](https://elysiatools.com/de/tools/stryd-running-power-critical-power-and-w-prime-bal-reconstructor): Leiten Sie CP und W′ aus einem 3-Minuten-All-out-Test, Leistung–Zeit-Paaren oder Distanz–Zeit-Läufen ab und geben Sie eine Stryd-Sitzung (.fit/.tcx/CSV) wieder: W′bal nach dem Integralmodell von Skiba 2012 und dem Differentialmodell von Froncioni/Skiba/Clarke, Erschöpfungsprognose, Stryd-Zonen und Doppelpanel-Diagramm.
- [Achsen- und Instanz-Baukasten für Variable Fonts und CSS font-variation-settings](https://elysiatools.com/de/tools/variable-font-axis-instance-and-css-font-variation-settings-builder): Lade eine Variable Font (TTF/OTF/WOFF/WOFF2) hoch, um ihre fvar-Achsen und benannten Instanzen zu prüfen, die Interpolation live im Browser voranzusehen und ein kopierfertiges font-variation-settings-CSS samt hochwertiger Ersatzproperties und variablem @font-face-Block zu erzeugen.
- [SQL Ausführungsplan-Visualisierer](https://elysiatools.com/de/tools/sql-explain-plan-visualizer): Füge EXPLAIN-/EXPLAIN-ANALYZE-Ausgaben (PostgreSQL/MySQL/SQLite) ein, um einen Kostenbaum zu erhalten, Abweichungen zwischen geschätzten und tatsächlichen Zeilen zu markieren und Indexvorschläge zu erhalten
- [Inspektor für Windows-PE-/Linux-ELF-/Mach-O-Binärheader (Sektionen, Importe/Exporte)](https://elysiatools.com/de/tools/windows-pe-linux-elf-mach-o-binary-header-section-import-export-inspector): Laden Sie eine PE-COFF- (.exe/.dll), ELF- oder Mach-O-Binärdatei hoch: Analyse der DOS-/PE-/COFF-/Optional-Header, des ELF-e_ident und der Tabellen sowie des Mach-O-Headers und der Load Commands; Ausgabe: Einstiegspunkt/Image-Base, Sektionstabelle mit RVA↔Offset-Zuordnung, Importe/Exporte, dynamische Symbole und Relokationen, Cross-Architektur-Anmerkungen (x86/x86-64/ARM/AArch64/RISC-V), ASLR/NX/PIE-Badges und ein Hexdump des Dateianfangs.
- [APNG-Analyzer für IDAT/fdAT-Chunks, Deflate-Replay und Disposal-Methoden mit Frame-Timing](https://elysiatools.com/de/tools/apng-idat-fdat-chunk-streaming-deflate-replay-and-disposal-method-analyzer): Laden Sie ein PNG/APNG hoch und analysieren Sie die Animationsstruktur: PNG-Signatur und CRC32-Prüfung jedes Chunks, IHDR (Bit-Tiefe/Farbtyp/Interlace), acTL (Frame- und Wiederholungszahl, vor dem ersten IDAT), fcTL (Sequenznummer, Region x+y+w+h ≤ Canvas, Normalisierung von delay_num/delay_den, dispose_op none/background/previous, blend_op source/over), erster Frame per IDAT + Folgeframes per fdAT; die gemeinsamen fcTL+fdAT-Sequenznummern müssen lückenlos ab 0 aufsteigen; der Deflate-Strom jedes Frames wird wiedergegeben und die entpackte Größe = Höhe × (1 + Bytes pro Zeile) geprüft, korruptes zlib wird gemeldet; die Disposal-Simulation warnt u. a. vor previous im ersten Frame (gilt als background) und vor Frames mit Nullverzögerung.
- [CSV-Diagrammstudio: Histogramm, Streudiagramm und Boxplot](https://elysiatools.com/de/tools/csv-histogram-scatter-box-plot-chart-studio): CSV hochladen oder einfügen und sofort zeichnen: Histogramme nach Sturges / Freedman-Diaconis / Scott, Streudiagramme mit Pearson-r und Ausgleichsgerade sowie Tukey-Boxplots — jedes Diagramm als PNG und SVG herunterladbar.
- [Bildsteganographie: Einbetten & Erkennen](https://elysiatools.com/de/tools/image-steganography-embed-detect): Versteckt Text in den niederwertigsten Bits eines PNG, liest ihn zurück und führt die Chi-Quadrat-Stegoanalyse nach Westfeld–Pfitzmann mit gleitender p-Kurve und LSB-Ebenen-Vorschau aus.
- [OCR-PDF-zu-strukturiertes-JSON-Brücke](https://elysiatools.com/de/tools/ocr-pdf-to-structured-json-bridge): Extrahiert die PDF-Textebene mit Geometrie (Zeilen nach y-Position, Tabellen nach Spaltenlücken, Überschriften nach Schriftgröße, Doppelpunkt-Schlüsselwerte) und füllt Feld für Feld ein benutzerdefiniertes JSON Schema — Labels werden über normalisierte Schlüssel gepaart, Werte zu deklarierten Typen konvertiert und mit ajv validiert.

## Beispiele

- [MP3 Audio-Beispiele ohne Urheberrechte](https://elysiatools.com/de/samples/mp3-samples): Sammlung urheberrechtsfreier Audio-Beispiele zum Testen und Entwickeln, einschließlich Naturklänge, Meditationsmusik und Umgebungsgeräusche
- [Code-Kommentar-Beispiele](https://elysiatools.com/de/samples/code-comment-samples): Code-Beispieldateien mit verschiedenen Kommentarstilen zum Testen der Kommentarentfernung
- [QR-Code-Beispiele](https://elysiatools.com/de/samples/qrcode-samples): Beispiel-QR-Code-Bilder zum Testen von QR-Code-Lese- und Generierungswerkzeugen
- [GitHub Actions Testing - CI/CD Integration](https://elysiatools.com/de/samples/github-actions-testing): Umfassende GitHub Actions Test-Workflows einschließlich automatisierter Tests, paralleler Ausführung, Test-Berichte, Caching und fortgeschrittene CI/CD-Patterns für moderne Entwicklungs-Pipelines
