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 セットアップ fixture
  • tests/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 セットアップを活用
  • テスト用データの管理をより柔軟にする

This site uses Just the Docs, a documentation theme for Jekyll.