Traduzione automatica
Questa pagina è stata tradotta automaticamente dall'IA e potrebbe contenere errori. In caso di dubbi, fare riferimento alla versione inglese.
Architettura dei test¶
Il sistema di test di pplx_export è completamente offline, utilizza dati simulati verificati e blocca tramite snapshot il comportamento del renderer. Questa pagina descrive l'architettura e le garanzie; l'elenco dei moduli attuali si trova in Testing, e i dettagli delle fixture in Test fixtures.
La sezione mantiene la propria numerazione dalla panoramica dell'architettura.
1. Sistema di test¶
Esegui la suite con uv run pytest tests. I conteggi dei test vengono riportati dall'esecuzione corrente e non sono trattati come una costante architetturale.
1.1 Livelli¶
| Livello | Moduli rappresentativi | Contratto |
|---|---|---|
| Comportamento unitario puro | test_units.py, test di credenziali/cookie/config |
isolare funzioni, classi, validazione e normalizzazione con input simulati |
| Semantica dei componenti | test di interruzione, stub-workflow, variante di risposta e relazioni | esercitare la cooperazione tra parser, renderer, stato e codice indice senza accesso alla rete |
| Comportamento offline comando/stato | test di backfill, sincronizzazione eliminazioni, inizializzazione e regressioni di revisione | eseguire percorsi di comando su directory temporanee e trasporti fittizi |
| Snapshot del rendering | test_render_snapshots.py |
passare JSON simulato in formato API attraverso il percorso di re-rendering di produzione e confrontare tutti i byte Markdown con golden file committati |
Identificatori di revisione come N, V3, V4 e V5 sono metadati di tracciabilità attraverso questi livelli. Non definiscono un'architettura runtime separata e la loro relazione con i moduli di test non è necessariamente uno-a-uno.
1.2 Flusso dei dati degli snapshot¶
- Una fixture simulata fornisce
raw_entries.json,raw_blocks.jsonopzionale ethread.json. tests/conftest.py::render_fixturecopia questi file intmp_path.- La fixture chiama
commands.rerender_cmd.rerender, il percorso di ricostruzione offline di produzione. - I nuovi file
conversation.mdeturns/turn_*.mdvengono confrontati byte per byte con i prodotti goldengolden/committati.
I golden sono aspettative generate, non una fonte di dati indipendente. Qualsiasi modifica al renderer che alteri i byte degli artefatti renderà rossa la suite di snapshot finché la modifica non viene revisionata e i golden non vengono rigenerati intenzionalmente.
1.3 Confini di isolamento e fiducia¶
- Origine delle fixture — tutti gli input delle fixture committati sono dati simulati. Non sono copiati da account live, risposte API live,
web_archive/o archivi privati. - Confine di rete — i test utilizzano finti e percorsi offline; le fixture committate non richiedono credenziali o accesso alla rete.
- Confine di configurazione — la fixture autouse installa una configurazione dell'account segnaposto, quindi il vero
~/.configdi uno sviluppatore non determina i risultati. - Confine del filesystem — il comportamento dei comandi e delle migrazioni viene eseguito sotto
tmp_path; gli archivi utente non sono obiettivi di test. - Confine dei residui —
tests/scrub_fixtures.py --checkrifiuta stringhe specifiche dell'ambiente configurate, percorsi assoluti locali e credenziali URL firmate senza modificare i file.
Insieme, le asserzioni unitarie, la semantica dei componenti, i test di stato dei comandi e gli snapshot a livello di byte proteggono sia la logica locale che il contratto di re-rendering end-to-end.