test-creator
テストコードを作成する際に使用します。ユニットテスト、統合テスト、エンドツーエンドテストなど、あらゆる種類のテストコードを生成するためにこのスキルを利用してください。
When & Why to Use This Skill
This Claude skill automates the generation of high-quality test code, including unit, integration, and end-to-end (E2E) tests. It is specifically optimized for Python environments using pytest and testcontainers, providing a structured approach to database transactions, authentication mocking, and external API simulation. By following project-specific guidelines, it ensures efficient test coverage while maintaining focus on core business logic and minimizing manual setup overhead.
Use Cases
- Generating automated unit tests for complex financial logic such as transaction processing and dividend calculations using pre-defined fixtures.
- Setting up integration tests that require isolated PostgreSQL database environments and authenticated user sessions to ensure data integrity.
- Mocking external financial APIs (e.g., AlphaVantage, J-Quants) to simulate various market data scenarios without making actual network requests.
- Creating comprehensive test datasets for portfolio management features, covering both domestic and international stock market transactions.
| name | test-creator |
|---|---|
| description | テストコードを作成する際に使用します。ユニットテスト、統合テスト、エンドツーエンドテストなど、あらゆる種類のテストコードを生成するためにこのスキルを利用してください。 |
テストコード作成スキル
このスキルは、テストコードを生成するためのガイドラインと手順を提供します。
テストの実装方針
基本原則
- カバレッジだけを追い求めず、開発者が認知・管理できる範囲に留める
- 正常系を中心にテストを実装
- 異常系は必要最低限のものに限定
- 1人開発のため、過度な品質は追求しない
- 外部API中心でほぼモックになるテストは価値が見合わないため実装しない
- APIを経由したデータ作成: テストデータの作成は原則としてAPIエンドポイントを使用する(直接データベースに挿入しない)
- 取引:
create_transactionフィクスチャを使用 - 配当:
create_dividendフィクスチャを使用 - これにより実際のビジネスロジック(保有株の自動更新など)が正しく動作することを保証
- 取引:
- 共通フィクスチャの活用:
conftest.pyに定義された共通フィクスチャを積極的に利用する - 新規フィクスチャの追加: 複数のテストで再利用可能なセットアップロジックは
conftest.pyに追加する
データベースとトランザクション
- 各テストは独立したPostgreSQLデータベースで実行される(testcontainers使用)
db_sessionフィクスチャはトランザクション内で動作し、テスト終了後に自動ロールバック- テンプレートデータベース方式により初期化を高速化
- 認証トークン取得時は独立したセッションでユーザーを作成・コミット(他のセッションから参照可能にするため)
認証
- 一般ユーザー:
auth_tokenフィクスチャ(username: "testuser") - 管理者ユーザー:
auth_admin_tokenフィクスチャ(username: "adminuser") - APIリクエストには
headers={"Authorization": f"Bearer {auth_token}"}を指定
外部APIのモック
mock_external_apisフィクスチャが全テストに自動適用(autouse=True)- モック対象:
- AlphaVantage API(米国株情報、為替レート)
- J-Quants API(日本株情報)
- Yahoo Finance(株価取得)
- 株価の挙動: 初回と2回目以降で異なる値を返す
- 日本株: 1回目 3000.0円、2回目以降 3100.0円
- 米国株: 1回目 36000.0円、2回目以降 37500.0円(円換算済み)
- 外部APIを実際に呼び出すテストは不要(モック化されているため)
テストデータのセットアップ
- 日本株:
setup_japanese_stock_dataフィクスチャ(8058を100株、3000円で買付) - 米国株:
setup_us_stock_dataフィクスチャ(AAPLを10株、36054円で買付) - 配当:
setup_dividend_dataフィクスチャ(日本株・米国株の配当データ) - ポートフォリオ:
setup_portfolio_test_dataフィクスチャ(日本株・米国株・配当の全データ) - これらのフィクスチャを組み合わせて、テストに必要な初期状態を構築する
HTTPクライアント
- 非同期テスト:
clientフィクスチャ(AsyncClient) - 同期テスト:
sync_clientフィクスチャ(TestClient) - データベース接続は自動的にテスト用にオーバーライドされる
Instructions
テスト実装方針を確認する
- 上記の「テストの実装方針」セクションを読み、プロジェクト固有のルールを理解する
- 外部APIは自動的にモック化されているため、実際の呼び出しは不要
テスト計画を立てる
- 何をテストするか明確にする
- 既存のフィクスチャ(
auth_token、create_transaction、create_dividend、setup_japanese_stock_dataなど)を活用できるか確認
テストを実装する
- テストデータはAPIを経由して作成(
create_transaction、create_dividendフィクスチャを使用) - 認証が必要なエンドポイントは適切なトークンをヘッダーに含める(
headers={"Authorization": f"Bearer {auth_token}"}) - 新しい共通セットアップが必要なら
conftest.pyに追加する
- テストデータはAPIを経由して作成(
テストを実行して検証する
- 作成したテストコード単体を
uv run pytest <test_file>で実行 - テストが正しく動作することを確認する
- 作成したテストコード単体を