mcpField
P
pytest

pytest

github.com/microsoftテスト・品質2.5k65 回インストール今日更新
リポジトリ

pytest について

pytest スキルは、pytest を使ったテストの作成と整理方法を案内します。fixture、パラメータ化、アサーション、プラグインに加え、テストを独立させ、観察可能な動作を検証するための実践方法を扱います。

主な機能

  1. 01ソース構成に沿ったテスト整理
  2. 02fixture のスコープ選択と共有
  3. 03読みやすい ID を使ったパラメータ化
  4. 04アサーションと例外テストのパターン
  5. 05一般的な pytest プラグインの選択

活用シーン

  1. 01Python プロジェクトのテスト整理
  2. 02パラメータ化ケースで複数入力を検証
  3. 03再利用可能な fixture と後処理の設定
  4. 04テスト間の依存や実装詳細への依存を回避

インストール

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

$npx skills add https://github.com/microsoft/debugpy --skill pytest

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

詳細

スキル:pytest

フィクスチャ、パラメーター化、プラグインなど、pytest でテストを作成・整理する際のベストプラクティスです。

使用する場面

フィクスチャ、パラメーター化、マーカー、プラグイン、テスト構成など、pytest でテストを作成・整理するときにこのスキルを適用してください。

テストの整理

  • ソースの構成に対応するように、テストを tests/ ディレクトリに配置します。
  • テストファイルには test_<module>.py、テスト関数には test_<behavior>() という名前を付けます。
  • 共通のフィクスチャやセットアップがある場合に限り、関連するテストをクラスにまとめます。

フィクスチャ

  • 必要な最小のスコープ(function > class > module > session)でフィクスチャを定義します。
  • 共有フィクスチャには conftest.py を使い、適切なディレクトリ階層に配置します。
  • 複雑なフィクスチャの継承よりも、ファクトリーフィクスチャを優先します。
  • セットアップとティアダウンには yield フィクスチャを使い、tempfile よりも tmp_path を優先します。

パラメーター化

  • 複数の入力を使ったデータ駆動テストには @pytest.mark.parametrize を使います。
  • テスト結果を読みやすくするため、テスト ID(ids=...)を付けます。
  • フィクスチャと parametrize を組み合わせて、直積のテストを行います。

アサーション

  • 通常の assert 文を使います。pytest が書き換えるため、失敗時のメッセージが明確になります。
  • 例外のテストには pytest.raises(ExceptionType, match=...) を使います。
  • 浮動小数点数の比較には pytest.approx() を使います。

プラグイン

  • よく使われるプラグイン:pytest-cov、pytest-mock、pytest-asyncio、pytest-xdist、pytest-timeout。
  • 生の unittest.mock.patch よりも、pytest-mock の mocker フィクスチャを使います。

注意点

  • 可変状態には session スコープのフィクスチャを使わないでください。
  • 実装の詳細ではなく、観察可能な振る舞いをテストしてください。
  • テスト同士の依存を避け、各テストを単独で実行できるようにしてください。

コメント