Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Pytestによるテストの整理と実行 | Testing with unittest and pytest
Python構造化プログラミング

Pytestによるテストの整理と実行

メニューを表示するにはスワイプしてください

Pythonでクリーンで表現力があり、保守性の高いテストコードを書きたい場合、pytestは人気のある選択肢です。組み込みのunittestフレームワークとは異なり、unittestは特定のアサーションメソッド(例:self.assertEqual)を必要とする厳格なクラスベースの構造に従いますが、pytestではシンプルな関数内で標準のPythonのassert文を使用できます。これにより、ボイラープレートコードが大幅に削減され、複雑なクラス階層にロジックをラップしたり、単純な結果を検証するためだけに多数のフレームワーク固有のアサーション名を覚える必要がなくなり、テストがより簡潔になります。

pytestの最も強力な機能の1つは、テスト発見システムです。プロジェクトディレクトリで単にpytestを実行するだけで、test_*.pyまたは*_test.pyというパターンに一致するすべてのファイルを自動的に検出し、それらのファイル内でtest_で始まるすべての関数を実行します。つまり、どのテストを実行するかを手動で指定する必要はなく、pytestが自動的に処理します。

もう1つの重要な利点は、フィクスチャの利用です。フィクスチャは、テストが必要とする一時ファイルやデータベース接続などのリソースの準備やクリーンアップを担当し、再利用しやすい方法で提供します。関数に@pytest.fixtureデコレーターを付与し、テスト関数の引数として要求するだけで利用できます。これにより、コードがモジュール化され、同じセットアップロジックを繰り返す必要がなくなります。

pytestを使い始めるには、まずインストールが必要です。ターミナルで次のコマンドを実行してください。

pip install pytest

これにより、pytestの最新バージョンがダウンロードおよびインストールされ、すぐにテストの作成と実行を始めることができます。

以下は、関数ベースのテストの記述方法や再利用可能なフィクスチャの定義方法を実践的に示した例です。

import pytest

# A simple function to test
def add(a, b):
    return a + b

# Define a fixture that provides test data
@pytest.fixture
def sample_numbers():
    return (3, 5)

# Test function using the fixture
def test_add_with_fixture(sample_numbers):
    a, b = sample_numbers
    result = add(a, b)
    assert result == 8

# Another simple test function
def test_add_negative_numbers():
    assert add(-2, -4) == -6
question mark

pytestと比較した場合のunittestの主な利点は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 5.  6

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 5.  6
some-alt