pytest について
pytest は、テストの作成と実行に取り組む Python 開発者向けのスキルガイドです。フィクスチャ、パラメーター化、モック、設定、カバレッジレポート、並列実行を扱います。
主な機能
- 01Python テストの作成と実行
- 02フィクスチャによる準備と後処理
- 03テスト入力のパラメーター化
- 04モックによる依存関係の分離
- 05pytest の設定とカバレッジレポート生成
- 06pytest-xdist による並列テスト実行
活用シーン
- 01Python プロジェクトのユニットテスト作成
- 02テスト設定と依存注入の再利用
- 03複数の入力で関数の動作を確認
- 04CI でのテスト実行とカバレッジ確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ partme-ai/ full-stack-skills --skill pytestインストール後、Claude Code で/pytestを入力して読み込まれたか確認します。
同梱ファイルLICENSE.txt
詳細
このスキルを使う場面
ユーザーが次のことを希望する場合は、このスキルを使用してください。
- pytest で Python のユニットテストを作成して実行する
- テストのセットアップ、ティアダウン、依存性注入にフィクスチャを使用する
- テストをパラメーター化して、複数の入力セットで実行する
pytest-mockまたはunittest.mockで依存関係をモックするpytest.ini、pyproject.toml、またはconftest.pyで pytest を設定するpytest-covでカバレッジレポートを生成するpytest-xdistでテストを並列実行する
このスキルの使い方
ワークフロー
test_プレフィックスを付けたテスト関数、またはTestクラスを作成しますconftest.pyのフィクスチャを使用して、共通のセットアップと依存性注入を行います- 必要に応じてマーカーやフィルターを適用し、
pytestCLI でテストを実行します - カバレッジプラグインとレポートプラグインで結果を分析します
1. 基本的なテスト
def test_addition():
assert 1 + 1 == 2
def test_string_upper():
assert "hello".upper() == "HELLO"
2. フィクスチャ
import pytest
@pytest.fixture
def sample_user():
return {"name": "Alice", "email": "[email protected]"}
def test_user_name(sample_user):
assert sample_user["name"] == "Alice"
@pytest.fixture(autouse=True)
def reset_database(db):
db.clear()
yield
db.clear()
3. パラメーター化
import pytest
@pytest.mark.parametrize("input,expected", [
("hello", 5),
("", 0),
("pytest", 6),
])
def test_string_length(input, expected):
assert len(input) == expected
4. モック
def test_api_call(mocker):
mock_get = mocker.patch("requests.get")
mock_get.return_value.json.return_value = {"status": "ok"}
result = fetch_status()
assert result == "ok"
mock_get.assert_called_once()
5. テストの実行
# Run all tests
pytest
# Verbose with pattern filter
pytest -v -k "test_user"
# With coverage
pytest --cov=mypackage --cov-report=html
# Parallel execution
pytest -n auto
ベストプラクティス
- テスト間で変更可能な状態を共有せず、フィクスチャを使ってセットアップとティアダウンを行い、テストを独立させます
- 期待される動作が伝わる、明確で説明的なテスト名を付けます
- テストの実行順序に依存しないようにします。共通のフィクスチャには
conftest.pyを使用します - CI でテストスイート全体を実行します。カバレッジには
--covを使用し、早期に失敗させるには--maxfail=1を使用します - マーカー(
@pytest.mark.slow)でテストを分類し、対象を絞って実行します
リソース
- 公式ドキュメント:https://docs.pytest.org/
- pytest-cov:https://pytest-cov.readthedocs.io/
- pytest-xdist:https://github.com/pytest-dev/pytest-xdist
キーワード
pytest、Python テスト、フィクスチャ、パラメーター化、モック、conftest、カバレッジ、pytest-cov、pytest-xdist、ユニットテスト、マーカー
コメント
Markdown 対応