Pythonのテストフレームワークであるpytestを使用して、例外が適切に発生することをアサートする方法について説明します。
pytest.raisesを使用した例外のアサーション
pytestでは、pytest.raises
を使用して特定の例外が発生することをアサートすることができます。以下にその使用例を示します。
import pytest
def test_passes():
with pytest.raises(Exception) as e_info:
x = 1 / 0
def test_passes_without_info():
with pytest.raises(Exception):
x = 1 / 0
def test_fails():
with pytest.raises(Exception) as e_info:
x = 1 / 1
def test_fails_without_info():
with pytest.raises(Exception):
x = 1 / 1
上記のコードでは、pytest.raises
を使用してException
が発生することをアサートしています。with
ステートメント内で例外が発生すると、その例外はpytest.raises
によってキャッチされ、テストはパスします。
注意点
pytest.raises
の引数にException
を指定すると、関係のない例外もキャッチされてしまうため、本来検証したい観点が検証できない可能性があります。assert
文はwith
句と同じインデントレベルにする必要があります。
以上、Pythonとpytestを使用した例外のアサーションについての説明でした。これらの知識を活用して、より堅牢なテストコードを書くことができます。