mcpField
P
python-testing-patterns

python-testing-patterns

github.com/jurgendnテスト・品質1138 回インストール6 週間前に更新
リポジトリ

python-testing-patterns について

Python 開発者向けのテストパターンスキルです。動作変更を安全にするための焦点を絞ったテストを扱い、構成、境界の分離、フィクスチャ、モック、テストスイートの階層を説明します。

主な機能

  1. 01焦点を絞った準備・実行・検証の構成
  2. 02境界とエラーケースのテスト
  3. 03フィクスチャとモックの案内
  4. 04テストスイートのピラミッドの説明
  5. 05対象を絞ったテストのチェック項目

活用シーン

  1. 01特定の動作を検証するテストの作成
  2. 02エラー経路や入力パターンのテスト
  3. 03ネットワークやデータベースの影響の分離
  4. 04単体・統合・エンドツーエンドテストの計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jurgendn/agent-skills --skill python-testing-patterns

インストール後、Claude Code で/python-testing-patternsを入力して読み込まれたか確認します。

同梱ファイルreferences/advanced-patterns.md

詳細

Python テストパターン

変更時に動作の安全性を保てるテストを書きましょう。巧妙なフィクスチャやカバレッジのためだけのテストより、対象を絞った読みやすいテストを優先してください。

非同期テスト、モンキーパッチ、プロパティベーステスト、データベーステスト、CI、カバレッジツールなどの高度なパターンについては、references/advanced-patterns.md をお読みください。

基本原則

  • テストごとに1つの動作を検証します。 失敗から、どの動作が壊れているのかが分かるようにします。
  • Arrange/Act/Assert の構成にします。 準備、実行、検証を明確に分けます。
  • 境界とエラーをテストします。 正常系のテストだけでは不十分です。
  • 外部への作用を分離します。 テスト対象の動作ではない場合は、ネットワーク、時刻、乱数、サービスをモックします。
  • 意味のあるカバレッジを確保します。 すべての行ではなく、重要な動作やリスクをカバーします。

基本的な Pytest パターン

def test_adds_two_numbers():
    result = add(2, 3)
    assert result == 5

例外の場合:

import pytest

def test_rejects_zero_division():
    with pytest.raises(ValueError, match="zero"):
        divide(1, 0)

パラメーター化したケースの場合:

import pytest

@pytest.mark.parametrize("value, expected", [
    ("[email protected]", True),
    ("not-an-email", False),
])
def test_email_validation(value, expected):
    assert is_valid_email(value) is expected

フィクスチャ

有効期間が明確で、再利用可能なセットアップにはフィクスチャを使用します。

@pytest.fixture
def user():
    return User(id=1, email="[email protected]")

隠れたフィクスチャの複雑な依存関係は避けてください。テストで多くのフィクスチャが必要な場合、単位が密結合しているか、テストの範囲が広すぎる可能性があります。

モック

システム境界でモックを使用します。

  • HTTP クライアント
  • ファイルシステムやオブジェクトストレージ
  • 永続化をテストしない場合のデータベースセッション
  • 時刻や乱数
  • コストの高いモデル/API 呼び出し

呼び出しのアサーションが脆弱になるほど動作が複雑な場合は、モックよりフェイクを優先してください。

テストスイートの構成

小さなピラミッド型の構成にします。

  • 純粋なロジックには、多数のユニットテスト
  • 境界には、少数の統合テスト
  • 重要なワークフローには、少数のエンドツーエンドテスト

動作に基づいてテストに名前を付けます。

test_<unit>_<scenario>_<expected_behavior>

出力

テストについて助言する場合やテストを作成する場合は、次の内容を提示します。

  • 対象の動作
  • 必要なテストレベル
  • フィクスチャ/モック
  • 具体的なテストケース
  • 不足している境界値/エラーパス
  • 対象を絞ったテストを実行するコマンド

コメント