python-testing について
python-testingは、Python開発者向けにpytestでのテスト作成、フィクスチャ管理、非同期テスト、カバレッジ設定の指針をまとめたスキルです。実装とテスト基盤の内容をモジュール別に扱います。
主な機能
- 01pytestによる単体・統合テスト
- 02フィクスチャとモックの管理
- 03非同期テストのパターン
- 04カバレッジとプロジェクト設定
活用シーン
- 01Pythonプロジェクトのテスト作成
- 02外部依存の分離
- 03コルーチンの動作確認
- 04プロジェクトのカバレッジ基準設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ athola/ claude-night-market --skill python-testingインストール後、Claude Code で/python-testingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
modules/async-testing.mdfixtures-and-mocking.mdtest-infrastructure.mdtest-quality.mdtesting-workflows.mdunit-testing.md詳細
Python Testing Hub
pytest の設定、フィクスチャ管理、TDD の実装に関するテスト標準です。
クイックスタート
- 依存関係:
pip install pytest pytest-cov pytest-asyncio pytest-mock - 設定:次の内容を
pyproject.tomlに追加します。[tool.pytest.ini_options] testpaths = ["tests"] addopts = "--cov=src" - 確認:
pytestを実行し、test_*.pyに一致するファイルが検出されることを確認します。
使用する場面
- Python 3.9 以降のプロジェクトで、ユニットテストや統合テストを作成する場合。
pytest-mockまたはカスタムの monkeypatching を使用して、外部依存関係を分離する場合。pytest-asyncioマーカーとイベントループ管理を使用して、非同期ロジックを検証する場合。- プロジェクト全体のカバレッジしきい値とレポートを設定する場合。
使用しない場面
- テストの品質を評価する場合
- 代わりに pensive:test-review を使用してください
- インフラストラクチャのテスト 設定の場合は leyline:pytest-config を使用してください
モジュール
このスキルでは、システムプロンプトの予算を管理するためにモジュール単位で読み込みます。
コア実装
modules/unit-testing.mdを参照してください。AAA(Arrange-Act-Assert)パターン、基本的なテスト構造、例外の検証について説明しています。modules/fixtures-and-mocking.mdを参照してください。リクエストスコープのフィクスチャ、パラメーター化、境界でのモックについて説明しています。modules/async-testing.mdを参照してください。コルーチンのテスト、非同期フィクスチャ、並行性の検証について説明しています。
インフラストラクチャとワークフロー
modules/test-infrastructure.mdを参照してください。ディレクトリ標準、conftest.pyの管理、カバレッジツールについて説明しています。modules/testing-workflows.mdを参照してください。ローカル実行パターンと GitHub Actions との統合について説明しています。
標準
modules/test-quality.mdを参照してください。例外の広範な捕捉やテスト間の共有状態など、よくあるアンチパターンの特定について説明しています。
完了条件
- テストで AAA パターンを実装していること。
- カバレッジがプロジェクトの最低基準である 80% に達していること。
- 個々のテストが独立しており、実行順序に依存していないこと。
- 副作用を防ぐため、フィクスチャのスコープ(function、class、session)が適切に設定されていること。
- モックの使用が外部システムとの境界に限定されていること。
トラブルシューティング
- テスト検出:ファイル名が
test_*.pyパターンに一致することを確認してください。検出パスのデバッグにはpytest --collect-onlyを使用します。 - インポートエラー:通常は
pip install -e .で編集可能モードのインストールを行い、ローカルのソースディレクトリがパスに含まれていることを確認してください。 - 非同期テストの失敗:
pytest-asyncioがインストールされていること、また非同期テストで@pytest.mark.asyncioデコレーターまたは対応する自動モード設定を使用していることを確認してください。
コメント
Markdown 対応