Traduzione automatica
Questa pagina è stata tradotta automaticamente dall'IA e potrebbe contenere errori. In caso di dubbi, fare riferimento alla versione inglese.
Fixture di test¶
tests/fixtures/ contiene dati simulati deterministici, a forma di API, per la
suite di test. Gli input modellano strutture rappresentative di thread e
workflow; i loro prodotti renderizzati sono impegnati come snapshot golden.
1. Contratto delle sorgenti¶
Il contenuto corrente delle fixture impegnate è simulato:
- Le fixture nuove o aggiornate devono essere costruite come dati simulati; i contributori
non devono popolarle importando
web_archive/, dati di account utente, risposte API live o archivi privati. - Nomi, identità, identificatori, prompt, risposte, payload di workflow, percorsi e URL nei file impegnati sono segnaposto di test.
- Il JSON rispecchia gli schemi di risposta e archivio di produzione solo per esercitare il comportamento del parser, renderer, stato e relazioni.
- Il repository non impegna una mappatura inversa dai segnaposto agli identificatori privati.
I termini fixture a modalità completa e fixture a scenario ridotto descrivono la copertura del test e la forma dell'input, non la provenienza. Entrambi sono dati simulati.
2. Contratto delle directory¶
Ogni directory di fixture contiene input simulati a forma di risposta grezza e,
dove è necessario il confronto con snapshot, un albero golden/:
| Percorso | Ruolo |
|---|---|
raw_entries.json |
voci di thread simulate nella forma della risposta di produzione |
raw_blocks.json |
blocchi di workflow simulati; assenti dove la modalità non ha risposta a blocchi |
thread.json |
metadati di thread archiviati simulati |
golden/conversation.md + golden/turns/turn_*.md |
prodotti generati dagli input simulati e confrontati byte per byte |
Le convenzioni deterministiche attuali includono:
- account segnaposto
alice/bob, identità di esempio, uno spazio BOT segnaposto e unread_write_tokensegnaposto fisso; - identificatori derivati da uuid5 etichettati con
5cbeef00, preservando riferimenti incrociati intenzionali tra record simulati; - identificatori
toolu_simulati a lunghezza fissa etichettati con5crub0; - prompt, titoli, testo di workflow e percorsi file generici; e
- stringhe di query di URL firmati rimosse.
Queste convenzioni rendono facile rilevare residui accidentali specifici dell'ambiente; non implicano che gli identificatori simulati siano stati derivati da oggetti live.
3. Inventario¶
3.1 Fixture a modalità completa¶
Queste sono conversazioni simulate complete per ogni modalità supportata:
| Fixture | Copertura |
|---|---|
search_demo |
ricerca, un turno; blocco di codice R e codice inline |
deep_research_demo |
deep research; conversione end-to-end dei delimitatori matematici |
computer_demo |
computer, rendering di workflow a sette turni |
council_demo |
rendering del comitato di modelli council con un grande payload annidato |
study_demo |
rendering della modalità studio |
3.2 Fixture a scenario ridotto¶
Questi sono payload simulati focalizzati contenenti solo le voci e relazioni necessarie per una regressione. “Ridotto” non significa estratto da un thread reale.
| Fixture | Copertura |
|---|---|
scenario_computer_answer_fallback |
recuperare la risposta da un blocco di workflow schematizzato quando il percorso FINAL semplice non è disponibile |
scenario_subagent_fallback |
renderizzare un titolo di sub-agente e i suoi propri elementi quando non esiste una corrispondenza di background |
scenario_user_response |
rendering domanda/risposta WORKFLOW_ITEM_USER_RESPONSE |
scenario_subagent_stub |
finestra di associazione di dieci secondi per uno stub di risultato di sub-agente non ancorato |
scenario_workflow_item_nested |
rendering di blocco collassato WORKFLOW_ITEM_WORKFLOW annidato |
scenario_limit_interrupted |
interruzione per limite di spesa, cascata di attribuzione, posizionamento dell'appendice e nessun doppio rendering |
scenario_canceled |
annotazione WORKFLOW_CANCELED |
4. Manutenzione delle fixture¶
tests/scrub_fixtures.py normalizza i dati simulati, rigenera i prodotti
golden attraverso il renderer offline di produzione e impone un gate sui residui:
uv run python tests/scrub_fixtures.py
uv run python tests/scrub_fixtures.py --check
- Rigenerazione — ogni fixture viene renderizzata in una directory temporanea attraverso
pplx_export.commands.rerender_cmd.rerender; le discrepanze nel conteggio dei turni causano l'aborto. - Normalizzazione deterministica — testo segnaposto, UUID, valori
toolu_, token e URL firmati vengono normalizzati in modo idempotente. - Gli input di sicurezza non sono provenienza — la configurazione locale opzionale
tests/scrub_pairs.local.jsone la configurazione dell'account a livello utente estendono solo i controlli di sostituzione e residuo. Non devono essere usati come input per costruire scenari di fixture. - Modalità di controllo —
--checknon esegue scritture e fallisce su residui configurati, percorsi assoluti locali o credenziali di URL firmati.
Esegui lo strumento di manutenzione dopo aver modificato l'input JSON simulato o l'output del renderer,
ed esegui --check prima di impegnare modifiche alle fixture.
5. Autorità dello snapshot golden¶
Il JSON simulato impegnato è l'autorità di input. Il Markdown golden è output derivato: viene rigenerato da quel JSON con il percorso corrente di re-render di produzione e poi impegnato per il confronto di regressione a livello di byte. Non deve essere modificato come fonte di verità indipendente.
6. Vedi anche¶
- Testing — come la suite consuma le fixture
- Architettura del sistema di test — livelli di regressione e garanzie
tests/fixtures/README.md— inventario delle fixture locale al repository