atelier-kyo-manager テスト80%達成指示書

作成日: 2026-05-29 目標: Test軸 55-60% → 80%+ 実行環境: Windows デスクトップ版 Claude Code


現状

  • テスト数: 1494件(全通過、0失敗)
  • Test軸: 推定55-60%
  • ソースファイル: 189ファイル(うち未テスト約136ファイル)
  • テストファイル: 66ファイル

目標

Test軸80%以上。そのためには追加200-300テストが必要。


実行手順

0. プロジェクト移動

cd /home/yn4416/projects/atelier-kyo-manager

1. テスト実行コマンド

# 全テスト実行
python3 -m pytest -q --tb=no

# 個別ファイル実行
python3 -m pytest tests/FILE.py -v --tb=short

# テスト数確認
python3 -m pytest --co -q 2>&1 | tail -3

2. 既存テストパターン

以下のファイルを読んでパターンを理解すること:

  • tests/conftest.py — フィクスチャ(app, client, db等)
  • tests/test_models_extra_coverage.py — モデルテストの最新パターン
  • tests/test_routes_coverage.py — ルートテストの最新パターン
  • tests/test_config_utils_coverage.py — ユーティリティテストパターン

3. テスト追加対象(優先度順)

Tier 1: モデル・フォーム(簡単・高効果)

ファイル 推定テスト数 内容
app/forms.py 15-20 フォームバリデーション
app/models/listing_template.py 10-15 テンプレートモデル
app/models/listing_progress.py 10-15 進捗モデル
app/models/faq_template.py 10-15 FAQモデル
app/models/result_models.py 10-15 結果モデル
app/core/timezone.py 10 タイムゾーン処理
小計 65-90  

Tier 2: ユーティリティ(中難度)

ファイル 推定テスト数 内容
app/utils/scout_currency.py 15-20 通貨変換
app/utils/scout_config.py 10-15 設定管理
app/utils/scout_models.py 15-20 データモデル
app/utils/llm_protocol.py 10-15 LLM通信プロトコル
app/utils/shipping_agent.py 10-15 配送計算
app/utils/buyma_catalog_manager.py 10-15 カタログ管理
app/utils/buyma_catalog_storage.py 10-15 カタログ永続化
app/utils/observability.py 10 オブザーバビリティ
app/utils/presentation.py 10-15 表示フォーマット
app/utils/validation.py (既存テストあり、追加)  
小計 100-140  

Tier 3: サービス・ルート(やや複雑)

ファイル 推定テスト数 内容
app/services/chatbot_service.py 15-20 チャットボット
app/services/image_service.py 10-15 画像処理
app/services/pipeline_service.py (既存あり、追加)  
app/routes/misc.py 10-15 その他ルート
app/integrations/forward2me_client.py 10-15 外部API連携
app/commands.py 10-15 CLIコマンド
小計 55-80  

Tier 4: エージェント・ブラウザ(モック必須)

ファイル 推定テスト数 内容
app/extractors/product_info_extractor.py 15-20 抽出ロジック
app/extractors/moncler_extractor.py 10-15 Moncler抽出
app/agents/plugins/base.py 10-15 プラグイン基底
app/agents/plugins/farfetch_plp_v1.py 10 Farfetch PLP
app/agents/plugins/gucci_plp_v1.py 10 Gucci PLP
app/agents/plugins/moncler_plp_v1.py 10 Moncler PLP
小計 65-80  

4. テスト作成ルール

  1. 1ファイル = 1テストファイル(対応する名前にする)
    • app/utils/scout_currency.pytests/test_scout_currency.py
  2. 構造:
    """Tests for app/utils/scout_currency.py"""
    import pytest
    from app.utils.scout_currency import ...
    
    class TestScoutCurrency:
        def test_convert_jpy_to_eur(self):
            result = convert_currency(1000, 'JPY', 'EUR')
            assert result > 0
    
  3. DBテスト: conftest.pyapp フィクスチャを使う
    def test_model_persistence(self, app, db):
        with app.app_context():
            obj = Model(field='value')
            db.session.add(obj)
            db.session.commit()
            assert Model.query.count() == 1
    
  4. ルートテスト: client フィクスチャを使う
    def test_get_route(self, client):
        resp = client.get('/path')
        assert resp.status_code == 200
    
  5. 外部APIは必ずモック化:
    from unittest.mock import patch, MagicMock
    
    @patch('app.utils.scout_currency.requests.get')
    def test_with_mock(self, mock_get):
        mock_get.return_value.json.return_value = {'rate': 150.0}
        ...
    
  6. Playwright/Seleniumは絶対モック化(async汚染を防ぐ)

5. 検証

各ファイル作成後:

python3 -m pytest tests/NEW_FILE.py -v --tb=short

全ファイル完了後:

python3 -m pytest -q --tb=no 2>&1 | tail -5

目標: 1700+ テスト、0失敗

6. コミット

git add tests/
git commit -m "テスト追加: Test軸80%達成(+N件)"
git push

注意事項

  • ソースファイル(app/)は修正しない。テストファイルのみ作成・修正
  • conftest.py は必要に応じてフィクスチャを追加してもよい
  • 外部API・ブラウザ操作は必ずモック化
  • テストは冪等性を持たせる(実行順序に依存しない)
  • 日本語コメント不要。英語でOK

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