6-2. 自動テストと品質保証(QA)

pytest とフィクスチャ(@pytest.fixture)

pytest はPython標準の unittest よりもシンプルかつ強力なテストフレームワークです。

Python

import pytest

# テストの前処理データを定義するフィクスチャ
@pytest.fixture
def sample_user():
    return {"id": 1, "name": "Alice", "role": "admin"}

def test_user_is_admin(sample_user):
    assert sample_user["role"] == "admin"

モック(unittest.mock)による外部依存の切り離し

実際のDBアクセスや外部API通信をテスト中に発生させないよう擬似オブジェクトに置き換えます。

Python

from unittest.mock import MagicMock
import pytest

def fetch_user_score(api_client, user_id):
    # 外部APIを呼ぶ関数
    response = api_client.get(f"/users/{user_id}")
    return response.json()["score"]

def test_fetch_user_score():
    # 擬似APIクライアントを作成
    mock_client = MagicMock()
    mock_client.get.return_value.json.return_value = {"score": 95}

    score = fetch_user_score(mock_client, user_id=123)
    assert score == 95

テストカバレッジの測定運用

pytest-cov を利用してテスト実行率(カバレッジ)を測定し、リグレッションを防止します。

Bash

# カバレッジ測定とHTMLレポート生成
pytest --cov=app --cov-report=html

🎯 カバレッジ運用の鉄則 全体で80%以上を基準としつつ、ドメインロジック(ビジネスの核心部分)は100%を目指します。単純な設定ファイル等は除外設定(.coveragerc)を活用します。

コメント

タイトルとURLをコピーしました