テストアーキテクチャ¶
pplx_export テストシステムは完全にオフラインで動作し、チェックインされたモックデータを使用し、スナップショットでレンダラーの動作を固定します。このページでは、アーキテクチャと保証について説明します。現在のモジュールのリストはテストで、フィクスチャの詳細はテストフィクスチャで管理されています。
セクションはアーキテクチャ概要の番号に従います。
1. テストシステム¶
uv run pytest tests を使用してスイートを実行します。テスト数は現在の実行結果に基づいて報告され、アーキテクチャの定数ではありません。
1.1 階層¶
| 階層 | 代表モジュール | 契約 |
|---|---|---|
| 純粋なユニット動作 | test_units.py、認証情報/cookie/設定テスト |
モック入力で関数、クラス、検証、正規化を分離 |
| コンポーネントセマンティクス | 中断、スタブワークフロー、回答バリアント、リレーションテスト | ネットワークゼロ条件下でパーサー、レンダラー、状態、インデックスコードの連携をカバー |
| オフラインコマンドと状態動作 | backfill、削除同期、初期化、レビュー回帰 | 一時ディレクトリとfakeトランスポートでコマンドパスを実行 |
| レンダリングスナップショット | test_render_snapshots.py |
API形状のモックJSONを本番再レンダリングパスに送り、すべてのMarkdownをコミットされたゴールデンとバイト単位で比較 |
N、V3、V4、V5などのレビュー番号は階層をまたがるトレーサビリティメタデータであり、独立した実行アーキテクチャを定義するものではなく、テストモジュールと一対一で対応する必要もありません。
1.2 スナップショットデータフロー¶
- モックフィクスチャが
raw_entries.json、オプションのraw_blocks.jsonとthread.jsonを提供します。 tests/conftest.py::render_fixtureがこれらのファイルをtmp_pathにコピーします。- フィクスチャが
commands.rerender_cmd.rerenderを呼び出します。これは本番オフライン再構築パスです。 - 新しく生成された
conversation.mdとturns/turn_*.mdが、コミットされたgolden/成果物とバイト単位で比較されます。
ゴールデンは生成された期待結果であり、独立したデータソースではありません。成果物のバイトを変更するレンダラーの変更は、レビューされ意図的にゴールデンを再生成するまでスナップショットスイートを失敗させます。
1.3 分離と信頼境界¶
- フィクスチャソース — コミットされたすべてのフィクスチャ入力はモックデータであり、オンラインアカウント、ライブAPIレスポンス、
web_archive/、またはプライベートアーカイブからコピーされたものではありません。 - ネットワーク境界 — テストはfakeとオフラインパスを使用します。チェックインされたフィクスチャは認証情報やネットワークを必要としません。
- 設定境界 — autuseフィクスチャがプレースホルダアカウント設定をインストールし、開発者の実際の
~/.configがテスト結果を決定しません。 - ファイルシステム境界 — コマンドと移行動作は
tmp_pathの下で実行され、ユーザーアーカイブをテスト対象としません。 - 残留境界 —
tests/scrub_fixtures.py --checkはファイルを変更せずに、設定された環境依存文字列、ローカル絶対パス、署名付きURL認証情報を拒否します。
ユニットアサーション、コンポーネントセマンティクス、コマンド状態テスト、バイトレベルのスナップショットが、局所的なロジックとエンドツーエンドの再レンダリング契約を共同で保護します。