Maschinenübersetzung
Diese Seite wurde automatisch von KI übersetzt und kann Fehler enthalten. Bei Unklarheiten konsultieren Sie die englische Quelle.
Testen¶
Die Testsuite befindet sich in tests/, außerhalb des pplx_export-Pakets, und läuft
vollständig offline. Ihre API-förmigen Eingaben sind deterministische simulierte Daten, die unter
tests/fixtures/ eingecheckt sind; Tests hängen nicht von Live-Diensten oder einer echten
Benutzerkonfiguration ab.
Diese Seite enthält das aktuelle Testmodul-Inventar und den Arbeitsablauf für Mitwirkende. Informationen zum Regression-Design finden Sie unter Testsystemarchitektur. Informationen zum Eingabedatenvertrag finden Sie unter Test-Fixtures.
1. Tests ausführen¶
uv run pytest tests
pytest ist eine deklarierte Entwicklungsabhängigkeit. Die Suite garantiert:
- Kein Netzwerk — simulierte Eingaben sind eingecheckt; netzwerkbezogene Pfade werden
mit Fakes,
tmp_pathundmonkeypatchabgedeckt. - Keine echte Benutzerkonfiguration — vor dem Importieren eines Produktionsmoduls erstellt
tests/conftest.pyeine prozesslokale temporäre Konfiguration und überschreibtPPLX_EXPORT_CONFIG. Jeder Test erhält dann seine eigene Platzhalterkonfigurationalice/bobund stellt die prozesslokale Platzhalterkonfiguration danach wieder her. Subprozess-Regressionen stellen sicher, dass eine fehlende oder beschädigte Aufruferkonfiguration die Testsammlung nicht beeinträchtigen kann. - Schnelles Feedback — am 25.07.2026 beobachtete das Projekt 435 Tests, die aus 32
test_*.py-Modulen gesammelt wurden, und führte die vollständige Suite in etwa 13–25 Sekunden bei lokalen Verifikationsläufen aus. Die Zählungen sind ein datierter Repository-Snapshot und werden wachsen.
Nützliche Auswahlen:
| Befehl | Effekt |
|---|---|
uv run pytest tests |
vollständige Suite |
uv run pytest tests/test_units.py |
ein Modul |
uv run pytest tests -k snapshot |
Tests, deren Knoten-ID mit snapshot übereinstimmt |
uv run pytest tests -x -q |
beim ersten Fehler anhalten, leise Ausgabe |
uv run pytest --collect-only -q |
Anzahl der gesammelten Fälle aktualisieren |
2. Aktuelles Modulinventar¶
Inventar, synchronisiert mit dem Repository am 27.07.2026:
| Funktionale Familie | Module | Zweck |
|---|---|---|
| Render-Snapshots | test_render_snapshots.py |
Alle simulierten Vollmodus- und reduzierten Szenario-Fixtures neu rendern, dann die eingecheckten Produkte byteweise vergleichen |
| Kern- und gemeinsame Dienstprogramme | test_units.py |
Zustand, Drosselung, Planung, Normalisierung, Asset-Benennung, Moduserkennung, sichere Pfade und übergreifende Regressionen |
| Dokumentationsverträge, Fähigkeiten und Lokalisierung | test_agent_skills.pytest_audit_docs.pytest_translate_docs.py |
Repository-lokale Fähigkeitsverträge plus isolierte Miniatur-Repository-Tests für den schreibgeschützten Dokumentationsauditor und die maschinelle Übersetzungspipeline |
| Konfiguration, Authentifizierung und Bootstrap | test_config_external.pytest_cookie_profiles.pytest_credential.pytest_init.py |
Externe Konfigurationsisolierung, Cookie-Quellprofile, Anmeldeinformationsauswahl und Initialisierung |
| Rendering- und Workflow-Semantik | test_interruptions.pytest_stub_workflows.pytest_answer_variants.pytest_answer_variant_logging.pytest_relations.py |
Workflow-Zuordnung, Unterbrechungszustände, Antwortvarianten, Audit-Logging und Beziehungskanten |
| Offline-Archiv- und Indexwartung | test_search_mode_backfill.pytest_sync_deleted.pytest_status.py |
Anreicherung, Wiederaufnahme/Idempotenzverhalten, Kontenübergreifende Löscherkennung, Endzustände und die Offline-Zustandskonto-/Änderungsberichtsebenen |
| Review-Regressionen | 16 test_fix_*.py-Module, unten aufgeführt |
Korrekturen, die aus Review-Ergebnissen abgeleitet wurden; Modulnamen behalten die Review-Herkunft bei |
2.1 Review-Regressions-Herkunft¶
Review-Identifikatoren erklären, warum eine Regression existiert; sie sind nicht die primäre Architektur der Testsuite. Die Zuordnung ist bewusst viele-zu-viele: Ein Modul kann mehrere Ergebnisse abdecken, und ein Ergebnis kann auch Fälle zu einem bestehenden thematischen Modul hinzufügen.
| Herkunft | Dedizierte Module |
|---|---|
| N-Review | test_fix_n01_inline_assets.py, test_fix_n02_spaces_link.py, test_fix_n03_n12.py, test_fix_n04_cookies.py, test_fix_n05_n06_n09.py, test_fix_n07_usage_checkpoint.py, test_fix_n08_throttle_overflow.py, test_fix_n10_table_header.py, test_fix_n11_batch_total.py |
| V3-Review | test_fix_v301_nested_sources_text.py, test_fix_v305_export_products.py |
| V4-Review | test_fix_v401_thread_dir_migration.py, test_fix_v402_manifest_count.py, test_fix_v403_handle_assets_idempotency.py, test_fix_v405_ask_post_steps.py |
| V5-Review | test_fix_v5_review.py, plus gezielte Ergänzungen zu bestehenden thematischen Modulen |
| V6-Review | test_fix_v6_atomic_writes.py |
Die Modul-Docstrings bleiben die maßgebliche Erklärung des alten Verhaltens, des korrigierten Verhaltens und der Regressionsgrenze jedes Befunds.
3. Wie Snapshot-Tests den Produktions-Neu-Render-Pfad wiederverwenden¶
Snapshot-Tests implementieren keinen parallelen Renderer:
render_fixtureintests/conftest.pykopiert die simuliertenraw_entries.json, optionalesraw_blocks.jsonundthread.jsoneines Fixtures in ein temporäres Verzeichnis.- Es ruft
pplx_export.commands.rerender_cmd.rerenderauf, dieselbe Funktion, die vonpplx-export re-renderverwendet wird. - Die
rendered-Fixture-Factory gibt die frische Ausgabe und das eingechecktegolden/-Verzeichnis des Fixtures zurück. - Tests vergleichen
conversation.mdund jedesturns/turn_*.mdbyteweise.
Inhaltsinvarianten ergänzen die Byte-Gleichheit: Antworten dürfen nicht auf den leeren
(无)-Platzhalter kollabieren, und Dict-Repr-Überreste wie {'type': ... dürfen nicht
in gerenderten Text gelangen.
4. Hinzufügen eines Tests¶
- Vorhandene Logik — fügen Sie einen Test zum passenden thematischen Modul hinzu. Verwenden Sie
tmp_path, Fakes undmonkeypatch; greifen Sie niemals auf das Netzwerk oder echtes~/.configzu. - Fehlerregression — bevorzugen Sie das passende thematische Modul. Erstellen Sie ein
test_fix_<lineage>_<slug>.py-Modul, wenn das Beibehalten der Review-Herkunft die Rückverfolgbarkeit wesentlich verbessert; gehen Sie nicht von einem Modul pro Befund aus. - Render-Regression — fügen Sie ein simuliertes Fixture hinzu oder reduzieren Sie es, regenerieren Sie seine
goldenen Produkte mit dem Wartungswerkzeug, und registrieren Sie es dann in
test_render_snapshots.pyoder fügen Sie szenariospezifische Assertions hinzu.
Folgen Sie dem benachbarten Stil: Typannotationen,
from __future__ import annotations und zweisprachige Modul-Docstrings.
5. Siehe auch¶
- Test-Fixtures — simulierte Eingaben, goldene Produkte und der Wartungsvertrag
- Testsystemarchitektur — Testebenen und Regressionsgarantien
- Offline-Operationen — der Produktions- Neu-Render-Pfad, der von Snapshot-Tests verwendet wird