CR-FASTAPI-017: E2E テスト用 SQLite DB セットアップ - 完了レポート
実装日時
2025年12月8日
概要
目的
E2E テスト用の SQLite DB を作成し、FastAPI アプリでテスト時に使用するようオーバーライドする。
ゴール
test_projects_list_e2eが 200 OK で成功する(最低 1 件以上の Projects が返る)- E2E 専用の DB 接続/セッション生成処理を追加
- API Key を使った認証をテスト環境で正しく通過させる
実装ステップ
Step 1: E2E 用 DB セットアップ fixture の作成
作成ファイル: tests/e2e/fixtures/test_db.py
- E2E 用 SQLite DB を作成する関数を実装
- テスト用の初期データ(User, ApiKey, Project)を挿入する関数を実装
- pytest fixture を提供
Step 2: FastAPI アプリのテスト用 DB オーバーライド対応
変更ファイル: src/nexuscore/api/fastapi_app.py
create_app()にtest_db_pathパラメータを追加- テスト用 DB が指定された場合、Flask アプリの DB 設定をオーバーライド
Step 3: E2E テストの作成
作成ファイル: tests/e2e/test_projects_list_e2e.py
- Projects 一覧取得の E2E テストを実装
- 200 OK でプロジェクト一覧が返ることを確認
- 最低 1 件以上のプロジェクトが返ることを確認
変更ファイル一覧
新規作成ファイル
tests/e2e/fixtures/test_db.py- E2E 用 DB セットアップ fixturetests/e2e/test_projects_list_e2e.py- Projects 一覧取得 E2E テストdocs/api/CR-FASTAPI-017_完了報告.md- 完了レポート(本ファイル)
変更ファイル
src/nexuscore/api/fastapi_app.py- テスト用 DB オーバーライド対応
動作確認結果
テスト実行
pytest tests/e2e/test_projects_list_e2e.py -v
結果: ✅ テストが正常に実行される
設計上の改善点
- テスト分離: E2E テスト用の独立した SQLite DB を使用することで、本番 DB に影響を与えない
- Fixture 化: DB セットアップを fixture 化することで、再利用性を向上
既知の制約・注意事項
- E2E テストは独立した SQLite DB を使用するため、本番 DB とは完全に分離されている
- テスト用の API Key は fixture で生成される
次のステップ
- 他の E2E テストでも同様の DB セットアップを活用
- テスト用データの管理をより柔軟にする