pytest-Suite: 13 Tests in ~1 s, mutations-geprueft
Im Projekt sind ueber Monate dutzende Szenario-Tests entstanden ("mit 10
Szenarien getestet", "mit 18 synthetischen Szenarien") — alle als
Wegwerf-Skripte, keiner lief je ein zweites Mal. Bei einem System, das man vor
jeder Aenderung neu starten und live verifizieren muss, ist das der teuerste
Teil der Schleife.
Erfasst sind die beiden juengsten Pfade:
· _check_pending_fill (6 Faelle) — u.a. "fremde Position NICHT taggen" und
"derselbe Fill zaehlt nur einmal"
· Selbst-Kalibrierung (7 Faelle) — Episoden-Dedup, WARTEN re-armt, Auswertung
in beide Richtungen inkl. Broker-Offset, fehlende Bar bleibt offen,
Aggregation
Drei harte Regeln in tests/conftest.py: keine Live-DB (frische Temp-Datei je
Test), kein MT5 / kein laufender Server (gestubbt), kein Netz. Das Schema legen
die ECHTEN Konstruktoren an — HistoryLogger UND CandleLogger, denn candles_m1
gehoert nicht zum History-Schema. Ein handgebautes Test-Schema wuerde
irgendwann vom Produktivstand abweichen.
Warum Temp-DB statt Kopie der Live-DB: am 06.08. haben echte candles_m1-Zeilen
in einem vermeintlich leeren Fenster einen Test verfaelscht — zweimal sah es
nach einem Code-Fehler aus, es waren Testfehler.
MUTATIONS-GEPRUEFT, weil eine Suite die immer gruen ist wertlos waere: eine
absichtlich eingebaute "fremde Position wird doch getaggt"-Regression wird
gefangen. Nebenbefund: der Fill-Dedup ist DOPPELT gesichert (_pending_tagged
und der pop aus _pending_tickets) — nur eines zu entfernen faellt nicht auf,
beides zusammen bricht sofort zwei Tests. Gewollte Redundanz, kein
ungetesteter Zweig.
tests_rec_outcomes.py (Wegwerf-Fassung von gestern) und die verwaiste
test_pbreak.db entfernt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
79f3e8efe1
commit
9887e3d5da
@@ -259,6 +259,33 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
|
||||
Anteil, WR-Verfall, PF<1, Einzelverlust). **Wöchentlich** laufen lassen (B4/B5).
|
||||
- **Vor „fertig":** immer `python -m py_compile <datei>`; JS grob via Klammern-
|
||||
Balance prüfen (kein node im Env).
|
||||
- **⚠⚠ TEST-SUITE (`pytest`, `tests/`, seit 2026-08-07) — 13 Tests, ~1 s.**
|
||||
Im Projekt sind über Monate **dutzende Szenario-Tests** entstanden („mit 10
|
||||
Szenarien getestet", „mit 18 synthetischen Szenarien"), alle als
|
||||
Wegwerf-Skripte. **Keiner davon lief je ein zweites Mal.** Bei einem System, das
|
||||
man vor jeder Änderung neu starten und live verifizieren muss, ist das der
|
||||
teuerste Teil der Schleife.
|
||||
Aufruf: **`python -m pytest`** (Konfiguration in `pytest.ini`).
|
||||
Erfasst sind zunächst die beiden jüngsten Pfade: **`_check_pending_fill`**
|
||||
(6 Fälle, u. a. „fremde Position NICHT taggen" und „derselbe Fill zählt nur
|
||||
einmal") und die **Selbst-Kalibrierung** (7 Fälle: Episoden-Dedup, WARTEN
|
||||
re-armt, Auswertung in beide Richtungen inkl. Broker-Offset, fehlende Bar bleibt
|
||||
offen, Aggregation).
|
||||
⚠ **Drei harte Regeln in `tests/conftest.py`**, damit die Suite jederzeit
|
||||
gefahrlos läuft: **keine Live-DB** (jeder Test bekommt eine frische Temp-Datei),
|
||||
**kein MT5, kein laufender Server** (alles Broker-Nahe gestubbt), **kein Netz**.
|
||||
⚠ Das Schema wird über die **echten** Konstruktoren angelegt — `HistoryLogger`
|
||||
UND `CandleLogger` (`candles_m1` gehört nicht zum History-Schema). Ein von Hand
|
||||
nachgebautes Test-Schema würde irgendwann vom Produktivstand abweichen.
|
||||
⚠ **Warum die Temp-DB und nicht eine Kopie der Live-DB:** am 06.08. haben ECHTE
|
||||
`candles_m1`-Zeilen in einem vermeintlich leeren Fenster einen Test verfälscht —
|
||||
zweimal hintereinander sah es nach einem Code-Fehler aus, es waren Testfehler.
|
||||
✅ **Mutations-geprüft** (eine Suite, die immer grün ist, ist wertlos): eine
|
||||
absichtlich eingebaute „fremde Position wird doch getaggt"-Regression wird
|
||||
gefangen. ⚠ Nebenbefund dabei: der Fill-Dedup ist **doppelt** gesichert
|
||||
(`_pending_tagged` UND der `pop` aus `_pending_tickets`) — nur eines von beiden
|
||||
zu entfernen fällt nicht auf, beides zusammen bricht sofort zwei Tests. Das ist
|
||||
gewollte Redundanz, kein ungetesteter Zweig.
|
||||
- **⚠⚠ KONFIDENZINTERVALLE statt Bauchgefühl (`backtest_cost_gate.ci95`, seit
|
||||
2026-08-07).** Das Projekt entschied bis dahin über **Punktschätzungen** plus die
|
||||
2-Stichproben-Regel; ob ein ØR von +0,12 bei n=30 überhaupt von null zu
|
||||
|
||||
Reference in New Issue
Block a user