コンテンツにスキップ

Python/pytest

出典: フリー教科書『ウィキブックス(Wikibooks)』

Python/pytestの概要

[編集]

pytest(パイテスト)は、Pythonのテストフレームワークであり、標準ライブラリのunittestよりもシンプルで使いやすいテストツールとして広く利用されています。pytestは、テストの自動検出、豊富なアサーション(検証)機能、パラメータ化テスト、並列実行などの機能を提供しています。また、サードパーティ製の拡張プラグインを利用して、さらなる機能の拡張も可能です。

主な機能

[編集]

1. 自動検出: pytestは、テストを自動的に検出して実行します。テストファイルやテストメソッドの命名規則に従っていれば、追加の設定なしでテストを実行することができます。

2. アサーション: pytestは、標準のアサーションだけでなく、さまざまなカスタムアサーションを提供します。テスト結果の検証に便利なアサーションを多く備えているため、テストの記述がシンプルになります。

3. パラメータ化テスト: pytestでは、同じテストメソッドを複数のパラメータで実行することができます。これにより、同じテストロジックを複数の入力データに対して繰り返し適用してテストを実行できます。

4. 並列実行: pytestは、複数のテストを並列実行することができます。これにより、テストの実行時間を短縮することができます。

5. フィクスチャ: pytestでは、テストメソッドに前処理や後処理を追加するためのフィクスチャを定義することができます。フィクスチャは、テストの状態を設定したり、リソースを確保したりするのに役立ちます。

Python/pytestのコード例

[編集]

アサーションの使用

[編集]
def add(a, b):
    return a + b

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

パラメータ化テストの例

[編集]
import pytest

def multiply(a, b):
    return a * b

@pytest.mark.parametrize("a, b, expected", [
    (2, 3, 6),
    (-1, 1, -1),
    (0, 100, 0)
])
def test_multiply(a, b, expected):
    assert multiply(a, b) == expected

フィクスチャの使用

[編集]
import pytest

# フィクスチャの定義
@pytest.fixture
def setup_teardown_example():
    # 前処理
    print("Setup")
    yield
    # 後処理
    print("Teardown")

def test_with_fixture(setup_teardown_example):
    # フィクスチャを使ったテスト
    assert True

これらのコード例は、pytestの基本的な機能を示しています。pytestはシンプルで直感的なテストフレームワークであり、Pythonのテストコードをより効果的に書くことができます。テスト駆動開発(TDD)やテスト自動化において広く活用されています。詳細な使い方や機能については、公式ドキュメントを参照することをおすすめします。