🧪 Pytest初級編:Pythonテスト自動化の第一歩
🌐 はじめに
Pythonでのソフトウェア開発において、コードが正しく動作することを確認するテストはとても重要です。特に、開発が進むにつれて手動での確認作業が煩雑になるため、自動化されたテストが不可欠になります。
Pytest(パイテスト) は、そのテスト自動化を効率的に進めるための、Pythonで最も人気のあるフレームワークのひとつです。この初級編では、Pytestの導入から基本的な書き方、実行方法までを、初心者の方にもわかりやすく丁寧に解説していきます。
✅ Pytestとは?
Pytestは、Pythonで単体テスト(ユニットテスト)を書くための軽量で柔軟なテストフレームワークです。
Pytestの主な特徴:
- シンプルな構文:Pythonの標準文法である
assertを使うだけでテストが書けます。 - 自動でテスト関数を検出:特別なクラスや継承が不要です。
- テスト失敗時の出力がわかりやすい:エラーの原因をすばやく特定できます。
- 拡張性が高い:プラグインやフィクスチャなどを使って高度なテストも可能(中級編以降で紹介)
- 標準ライブラリの
unittestよりもコードが簡潔で読みやすい
Pytestは初心者にも扱いやすく、プロの開発現場でも広く使われています。
🛠️ Pytestのインストール
PytestはPythonのパッケージ管理ツールpipを使って簡単にインストールできます。
pip install pytest
インストール後は pytest コマンドが使えるようになります。バージョン確認には以下のコマンドを実行します:
pytest --version
🧪 テストの基本構文
まずはシンプルな関数のテストを書いてみましょう。
def add(a, b):
return a + b
この add 関数をテストするファイルを作成します。
from calc import add
def test_add():
assert add(2, 3) == 5
テスト関数は test_ で始まる名前にするのがPytestのルールです。ファイル名も test_*.py の形式にします。
▶️ テストの実行方法
以下のようにコマンドを実行すると、カレントディレクトリ以下にある test_*.py ファイルをPytestが自動的に見つけて、すべてのテストを実行してくれます。
pytest
出力結果には、成功したテストの数、失敗したテストの内容、実行時間などが含まれます。
❌ テストが失敗した場合
from calc import add
def test_add():
assert add(2, 2) == 5 # 実際には 4 なので失敗!
テストを実行すると、以下のようなわかりやすいエラー出力が表示されます:
> assert add(2, 2) == 5
E assert 4 == 5
このように、どの値が想定と違ったのかがすぐにわかるため、デバッグしやすいのがPytestの魅力のひとつです。
🔁 複数のテストを書く
1つの関数に対して、異なる入力に対する挙動を確認するために複数のテスト関数を書くことができます。
from calc import add
def test_add_positive():
assert add(1, 2) == 3
def test_add_zero():
assert add(0, 0) == 0
def test_add_negative():
assert add(-1, -1) == -2
すべての関数が test_ で始まっていれば、Pytestが自動的にすべての関数を実行してくれます。テストケースが増えても管理がしやすくなります。
📁 テストファイルの構成例
プロジェクトが大きくなると、テストを整理することが重要になります。以下のような構成がよく使われます:
project/
├── calc.py
├── test/
│ └── test_calc.py
test ディレクトリにテストコードをまとめることで、アプリケーション本体と分離して管理しやすくなります。
🔚 まとめ
このPytest初級編では、次の内容を紹介しました:
- Pytestとは何か、どのような特徴があるか
- インストール方法と基本的な使い方
- 単純なテストコードの書き方と構造
- テストの実行方法とエラーメッセージの読み方
- 複数のテスト関数の書き方
Pytestは、テストコードを書く負担を減らし、コードの品質を高めるための頼もしい味方です。小さな関数でも積極的にテストを追加することで、将来的なバグの防止につながります。
次回の中級編では、パラメータ化、フィクスチャ、マーク、グループ化といったより便利な機能を紹介します。どうぞお楽しみに!
株式会社ONE WEDGE
【Serverlessで世の中をもっと楽しく】 ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
Discussion