python-tdd-with-uv について
uv で依存関係を管理し、pytest を実行する Python 向けテスト駆動開発スキルです。小さなレッド・グリーン・リファクターのサイクルと、動作を重視したテストを推奨します。
主な機能
- 01uv で Python プロジェクトを設定
- 021 サイクルにつき失敗テストは1件
- 03レッド・グリーン・リファクターを実践
- 04uv 経由で pytest を実行
- 05観察可能な動作をテスト
活用シーン
- 01Python プロジェクトで TDD を開始
- 02小さな検証単位で機能を追加
- 03指定または全体の pytest を実行
- 04uv でプロジェクト依存関係を管理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ spencerpauly/ awesome-cursor-skills --skill python-tdd-with-uvインストール後、Claude Code で/python-tdd-with-uvを入力して読み込まれたか確認します。
詳細
uv を使った Python の TDD
依存関係と環境を素早く管理できる uv を使い、テストファーストで Python コードを書きます。
プロジェクトのセットアップ
uvがインストールされていることを確認します:uv --version- プロジェクトに
pyproject.tomlがない場合は、初期化します:uv init - 開発用の依存関係として pytest を追加します:
uv add --dev pytest pytest-cov - テストランナーが動作することを確認します:
uv run pytest --co
TDD ワークフロー — 垂直スライス
小さなサイクルで作業します。一度に失敗するテストを複数書いてはいけません。
計画フェーズ
コードを書く前に、次の点を確認します:
- どのインターフェースを変更する必要がありますか?(関数、クラス、API)
- どの動作が最も重要ですか?(重要な経路を優先する)
- テストしやすい設計にできますか?(依存関係を注入し、グローバル状態を避ける)
サイクル
RED → Write ONE failing test for the next behavior
GREEN → Write the MINIMUM code to make it pass
REFACTOR → Clean up without changing behavior
REPEAT
ルール:
- 失敗するテストができる前に実装を書いてはいけません
- 一度に失敗するテストを複数書いてはいけません
- 変更するたびに
uv run pytestを実行します - テストでは実装の詳細ではなく、観測可能な動作を検証します
- モックはシステム境界(I/O、ネットワーク、時計)でのみ使用します
テストファイルの構成
# tests/test_<module>.py
class TestFeatureName:
"""Group related behaviors."""
def test_does_expected_thing_when_given_input(self):
result = function_under_test(input_value)
assert result == expected
def test_raises_when_given_invalid_input(self):
with pytest.raises(ValueError):
function_under_test(bad_input)
テストの実行
uv run pytest # all tests
uv run pytest tests/test_foo.py # single file
uv run pytest -k "test_name" # by name pattern
uv run pytest --cov=src # with coverage
uv run pytest -x # stop on first failure
uv の基本
uv add <package> # add dependency
uv add --dev <package> # add dev dependency
uv remove <package> # remove dependency
uv sync # sync environment from lockfile
uv run <command> # run in managed environment
uv lock # regenerate lockfile
- コマンドの実行には必ず
uv runを使います。仮想環境を手動で有効化してはいけません pyproject.tomlとuv.lockの両方をコミットします
参考資料
- mattpocock/skills — TDD skill — 垂直スライス型 TDD の考え方
- nizos/tdd-guard — フックによる TDD の自動的な徹底
- s2005/uv-skill — uv のワークフローパターン
コメント
Markdown 対応