Test Integrazione: Flusso Dati Background Color
Percorso File: tests/integration/test_bgcolor_flow.py
Tipologia: Test di Integrazione / Anti-Regressione
1. Perché esiste questo file? (Il “Perché”)
Questo test è stato creato in risposta a un bug critico (v5.1.0) in cui i dati di colorazione dello sfondo (background_events), generati correttamente dalla strategia, venivano persi silenziosamente durante il trasporto verso l’interfaccia utente.
Il colpevole era il BacktestWorker, che ricostruiva manualmente il dizionario dei risultati scartando qualsiasi chiave non esplicitamente prevista (“Whitelist filtering”).
Questo test serve a garantire che:
- Il Pattern Passthrough (vedi QC DD-DATA-FLOW-PRINCIPLES) sia rispettato.
- Qualsiasi dato extra prodotto dal
BacktestEngine(comebackground_events) arrivi intatto al segnalefinisheddel Worker.
2. Come Funziona
Il test simula l’intera pipeline di backtest in memoria, senza avviare la GUI ma utilizzando i componenti reali:
- Mock Strategy: Utilizza una
MockColorStrategyminimale che chiamaself.bgcolor()ad ogni barra. - Dati Dummy: Crea un DataFrame OHLCV sintetico di 10 righe.
- Esecuzione Sincrona: Istanzia un
BacktestWorkere chiama direttamente il metodo.run()(bypassando il QThreadPool per semplicità di test). - Asserzioni Critiche:
- Verifica che il segnale
finishedcontenga la chiavebackground_events(Il Fix). - Verifica che la lista contenga esattamente 10 eventi.
- Verifica l’integrità dei dati (il colore della prima e dell’ultima barra).
- Verifica che il segnale
3. Come Eseguirlo
Dalla root del progetto:
python tests/integration/test_bgcolor_flow.py4. Manutenzione
Se in futuro il BacktestWorker dovesse essere rifattorizzato, questo test fallirà se il nuovo codice tornerà a filtrare le chiavi del dizionario invece di usare copy() e update().
Regola d’Oro: Se questo test fallisce, significa che abbiamo interrotto il flusso dei dati tra Engine e UI. NON modificare il test per farlo passare, ma correggere il Worker per lasciar passare i dati.