【パイテスト】

pytest とは?

💡 Pythonテストの「万能ナイフ」——シンプルなのに何でもできる
📌 このページのポイント
pytest の主要機能 シンプルなassert def test_add(): assert 1+1 == 2 特別な記法不要! fixture @pytest.fixture def db_conn(): return connect() 800+プラグイン pytest-cov pytest-xdist pytest-mock pytest-django テスト実行フロー テスト収集 test_*.py 検出 fixture準備 依存性注入 テスト実行 assert検証 レポート 結果出力
pytest の主要機能と実行フロー
ひよこ ひよこ

pytestって何がすごいの?

ペンギン先生 ペンギン先生

Pythonの標準的なassert文を使うだけでテストが書けるのが最大の魅力だよ。特別なメソッドを覚えなくても、assert result == 42 みたいに直感的に書けるんだ

ひよこ ひよこ

Python標準のunittestとはどう違うの?

ペンギン先生 ペンギン先生

unittestはJUnit由来でクラスベースだから、テストを書くのにお作法が多いんだ。pytestなら関数一つでテストが完結するし、失敗したときに「何が違ったか」を詳しく教えてくれるよ

ひよこ ひよこ

fixtureって何のこと?

ペンギン先生 ペンギン先生

テストの前準備をする仕組みだよ。たとえばデータベース接続やテストデータの作成を@pytest.fixtureで定義しておくと、テスト関数の引数に名前を書くだけで自動的に使えるんだ。スコープを指定すれば「テストごと」「クラスごと」「セッション全体で1回だけ」と実行タイミングも制御できるよ

ひよこ ひよこ

プラグインはどんなものがあるの?

ペンギン先生 ペンギン先生

pytest-covでカバレッジ計測、pytest-xdistでテストの並列実行、pytest-mockでモック作成など、800以上あるよ。pytest-djangoやpytest-asyncioなど、フレームワーク固有のプラグインも充実しているんだ

ひよこ ひよこ

大規模プロジェクトでも使えるの?

ペンギン先生 ペンギン先生

もちろん。conftest.pyという設定ファイルをディレクトリごとに配置して、fixtureやフックをスコープ管理できるんだ。実はpytestのフック機構は非常に強力で、テストの収集・実行・レポートのあらゆる段階をカスタマイズできる。大企業のCIパイプラインでも広く採用されているよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「pytest」って出てきたら「Pythonの定番テストツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「pytest」 = Pythonテスト
💬 「py」はPython、「test」はテストのこと。小文字始まりの表記が正式名称だよ
← 用語集にもどる