Ceeds Academy教材アプリ教材・症状語・タグで検索
索引グラフ試す
テストFW/ライブラリ▸pytest

pytest: Python のユニットテスト(assert / fixture / parametrize)

hands-on所要 30分最新草稿
前提: テスト: なぜ書く・何を書く(単体 / 結合 / E2E とピラミッド)
意味グラフ(この教材と内容的に近い教材・1ネスト)
例え(Analogies)
pytest=検品チェックリスト

工場の検品で「この条件ならこの出力」を1項目ずつ確認するチェックリスト。parametrizeは同じ検品を複数のサンプルへ一括適用。fixtureは検品台の事前セット。

概要

📍 テストFW ▸ pytest ▸ ユニット | 種別: hands-on | facts_as_of 2026-06(pytest 9.0 / Python 3.14)

公式ドキュメント — hands-on

🎞 スライド

pytest=Python のテストFW

assert だけで書ける

3つの道具

assert … 期待を書く
fixture … 準備/後始末を使い回す
parametrize … 入力を変えて同じテスト

実行

[test_*.py を用意] ──pytest -q──▶ [合否を表示]

—
出典(sources)

docs.pytest.org ; 2026-06確認

確認問題(Review-Questions)
pytestで add(2,3)==5 を確認するテストの最小形は?コード
基礎公式
解答・解説▾ 開く

def test_add(): assert add(2, 3) == 5(ファイル名は test_*.py)。

複数の入力ケースを1つのテスト関数で回すには(pytest)?択一
基礎公式
解答・解説▾ 開く

@pytest.mark.parametrize を使う。

目次
例え概要公式ドキュメント出典確認問題
鮮度
最新
更新: 2026-06-15
次回棚卸し: 2027-06-15
周期: 12か月
版: pytest 9.0 / Python 3.14

概要

pytest は Python のテスト FW。assert だけで書け、fixture(準備の使い回し)と parametrize(複数入力)が強み。FastAPI のテストにも。

公式ドキュメント準拠(pytest 9.0)

# test_calc.py ファイル名・関数名は test_ で始める
from calc import add

def test_add():
    assert add(2, 3) == 5

import pytest
@pytest.mark.parametrize("a,b,exp", [(1, 1, 2), (2, 3, 5)])
def test_add_params(a, b, exp):
    assert add(a, b) == exp
pytest -q          # 実行(-q は簡潔表示)
  • assert で期待を書く。fixture で準備/後始末。FastAPI は TestClient でエンドポイントを叩く。

出典: pytest documentation

🧭 誤解訂正集

よくある誤解 正しい理解
専用の assert メソッドが要る pytest は素の assert でよい
似た入力ごとにテストを書く parametrize で1つにまとめる
集められないのは pytest のバグ 命名規則 / import パスの問題が多い

📖 用語

  • pytest … Python のテストフレームワーク。
  • assert … 期待どおりかを判定する文(偽なら失敗)。
  • fixture … テストの準備/後始末を使い回す仕組み。
  • parametrize … 入力を変えて同じテストを複数回流す指定。
  • TestClient … FastAPI のエンドポイントをテストから叩くクライアント。

✅ 確認の目安(can-do)

assert・fixture・parametrize の役割を区別し、**「このケースをどう書くか・集められないとき何を見るか」**を判断できる。

⚠️ エラー復旧集

症状 原因 復旧
テストが集められない 命名規則 ファイルを test_*.py / 関数を test_* にする
ModuleNotFoundError import パス ルートから実行 / __init__ や conftest を確認