Pythonテストパターン
pytest、TDD方法論、ベストプラクティスを使用したPythonアプリケーションの包括的なテスト戦略。
いつ有効化するか
- 新しいPythonコードを書くとき(TDDに従う:赤、緑、リファクタリング)
- Pythonプロジェクトのテストスイートを設計するとき
- Pythonテストカバレッジをレビューするとき
- テストインフラストラクチャをセットアップするとき
核となるテスト哲学
テスト駆動開発(TDD)
常にTDDサイクルに従います。
- 赤: 期待される動作のための失敗するテストを書く
- 緑: テストを通過させるための最小限のコードを書く
- リファクタリング: テストを通過させたままコードを改善する
# Step 1: Write failing test (RED)
def test_add_numbers():
result = add(2, 3)
assert result == 5
# Step 2: Write minimal implementation (GREEN)
def add(a, b):
return a + b
# Step 3: Refactor if needed (REFACTOR)
カバレッジ要件
- 目標: 80%以上のコードカバレッジ
- クリティカルパス: 100%のカバレッジが必要
pytest --covを使用してカバレッジを測定
pytest --cov=mypackage --cov-report=term-missing --cov-report=html
pytestの基礎
基本的なテスト構造
import pytest
def test_addition():
"""Test basic addition."""
assert 2 + 2 == 4
def test_string_uppercase():
"""Test string uppercasing."""
text = "hello"
assert text.upper() == "HELLO"
def test_list_append():
"""Test list append."""
items = [1, 2, 3]
items.append(4)
assert 4 in items
assert len(items) == 4
アサーション
…