この記事では、Pythonでのテストフレームワークである`pytest`の基本的な使用方法から応用例までを網羅します。具体的なコード例とその解説、応用例を含めています。
目次
はじめに
Pythonでのソフトウェア開発において、テストは非常に重要なフェーズです。`pytest`は、その中でも人気の高いテストフレームワークの一つです。この記事では、`pytest`の基本的な使い方から応用テクニックまでを解説します。
pytestの基本的な使い方
インストール方法
まずは、pytestをインストールしましょう。コマンドラインで以下のように入力します。
pip install pytest
簡単なテストケースの作成
pytestを使ったテストケースは非常に簡単に作成できます。以下に基本的な形を示します。
# test_sample.py
def test_addition():
assert 1 + 1 == 2 # 1 + 1が2であればテスト成功
def test_subtraction():
assert 3 - 1 == 2 # 3 - 1が2であればテスト成功
テストの実行
テストを実行するには、コマンドラインで以下を実行します。
pytest
pytestの応用テクニック
パラメータ化されたテスト
同じようなテストを繰り返し行いたい場合、パラメータ化されたテストが有用です。
import pytest
# test_parameters.py
@pytest.mark.parametrize("a, b, expected", [
(1, 2, 3),
(4, 5, 9),
(10, 20, 30)
])
def test_addition(a, b, expected):
assert a + b == expected
フィクスチャの使用
テストの前後で何らかのセットアップやクリーンアップが必要な場合には、フィクスチャを使用します。
import pytest
# test_fixture.py
@pytest.fixture
def setup_and_teardown():
print("前処理")
yield
print("後処理")
def test_one(setup_and_teardown):
assert 1 == 1
応用例
カスタムマーカーを用いたテスト
pytestでは、カスタムマーカーを用いてテストケースを分類できます。
# test_custom_marker.py
import pytest
@pytest.mark.slow
def test_slow_operation():
pass
@pytest.mark.fast
def test_fast_operation():
pass
データベースとの連携
データベースと連携したテストも可能です。
# test_database.py
import pytest
import sqlite3
@pytest.fixture
def db_connection():
conn = sqlite3.connect(':memory:')
yield conn
conn.close()
def test_db_operation(db_connection):
c = db_connection.cursor()
c.execute('''CREATE TABLE users (id int, name text)''')
c.execute("INSERT INTO users VALUES (1, 'John')")
db_connection.commit()
c.execute('SELECT * FROM users WHERE id=1')
row = c.fetchone()
assert row == (1, 'John')
まとめ
この記事では、`pytest`の基本的な使い方から応用テクニックまでを紹介しました。この知識を用いて、より堅牢なPythonアプリケーションを開発してください。
コメント