pytest について
pytest スキルは、pytest を使ったテストの作成と整理方法を案内します。fixture、パラメータ化、アサーション、プラグインに加え、テストを独立させ、観察可能な動作を検証するための実践方法を扱います。
主な機能
- 01ソース構成に沿ったテスト整理
- 02fixture のスコープ選択と共有
- 03読みやすい ID を使ったパラメータ化
- 04アサーションと例外テストのパターン
- 05一般的な pytest プラグインの選択
活用シーン
- 01Python プロジェクトのテスト整理
- 02パラメータ化ケースで複数入力を検証
- 03再利用可能な fixture と後処理の設定
- 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スコープのフィクスチャを使わないでください。 - 実装の詳細ではなく、観察可能な振る舞いをテストしてください。
- テスト同士の依存を避け、各テストを単独で実行できるようにしてください。
コメント
Markdown 対応