pytestでエラーメッセージを検証する(例外発生テスト)

pytestでエラーメッセージを検証する(例外発生テスト)Python
ゆうすけ
ゆうすけ

pytest で 例外発生時のエラーメッセージを検証したいです。

資格マフィア
資格マフィア

pytest.raises を使うことでエラーメッセージを検証することができるぞ。

 

✔️ 本記事のテーマ

 pytestで例外発生時のエラーメッセージを検証する

 

✔️ 読者さんへの前置きメッセージ

本記事は
「pytestでの例外発生時エラーメッセージの検証方法」
について書いています。

 

この記事を読むことで
「pytest.raises の 使い方」について理解できます。

 

pytestはPythonのテスト用ライブラリです。

参考:pytestの使い方【fixture, 実行方法など】

 

pytestを使うことでPythonコードのテストを手軽に、そして体系的に記述することができます。

そのpytestでは正常系だけでなく、例外発生時のエラーメッセージをテストすることができます。

 

この記事では

  • pytestでエラーメッセージを検証する方法
  • pytest.raisesの使い方

などを解説します。

 

では、解説していきましょう。

 

pytestの使い方

pytestの使い方

pytest の使い方は簡単です。
テストファイルの中で test_XXX という命名規則に従って関数を作成します。

def sum_values(a, b):
    return a + b


def test_sum():
    ret = sum_values(1, 2)
    assert ret == 3

 

そして、上記コードを書いたファイルがあるディレクトリで
pyetst コマンドを実行することでテストを実行することができます。

pyetst ./sample.py

 

以下のようにテスト結果が出力されます。

=============================================================== test session starts ================================================================
platform darwin -- Python 3.8.3, pytest-6.0.0, py-1.9.0, pluggy-0.13.1
rootdir:  XXXXXX
plugins: pycharm-0.6.0, Faker-4.14.0
collected 1 item                                                                                                                                   

sample.py .

テスト対象のファイル名の横に pass したテストケースの数だけ . が出力されます.

今回は1ケースだけ用意したので sample.py . と出力されています。

 

pytestでエラーメッセージを検証する

pytestでエラーメッセージを検証する

pytest では異常系テストとして、例外発生時のエラーメッセージをテストすることができます。


エラーメッセージを検証するには、以下のように pytest.raises を使用します。

import pytest


def sum_values(a, b):
    return a + b


def test_error_sum():
    with pytest.raises(Exception) as e:
        _ = sum_values(1, 'moji')

    assert str(e.value) == "unsupported operand type(s) for +: 'int' and 'str'"

コードについて解説すると、with 句 の中で pytest.raises(Exception) as e: として、
その後ろで e.value とエラーメッセージを比較します。

 

テスト対象の関数内で int 型 + str 型 をする際に
unsupported operand type(s) for +: ‘int’ and ‘str’
というエラーメッセージが表示されます。

 

そこで test_error_sum() ではこのメッセージを assert で比較しています。

 

このようにすることで pytest で異常系テストを実装することができます。

=============================================================== test session starts ================================================================
platform darwin -- Python 3.8.3, pytest-6.0.0, py-1.9.0, pluggy-0.13.1
rootdir:  XXXXXX
plugins: pycharm-0.6.0, Faker-4.14.0
collected 1 item                                                                                                                                   

sample.py ..

 

 

pytestやPythonのテスト開発について解説した書籍

pytestやPythonのテスト開発について解説した書籍

pytest のエラーメッセージ検証について解説しました。

 

pytestを始めとした、Pythonのテスト開発を学ぶためには以下の書籍がオススメです。

 

この書籍は

  • ソフトウェア開発におけるテストとは何か
  • pytest とは何か

というレベルから実践的なテスト方法まで非常に分かりやすく解説されています。

 

その人気からKindle本も出版されています。

Amazonからであれば、試し読みもできるので、一度見てみるのもオススメです。

エンジニアとしての自身の価値をチェックする(完全無料)

エンジニアとして、

自分の価値がどれくらいのものかご存知でしょうか?

 

エンジニアとしてIT業界に身を置いていると

今の会社でずっと働くのか、フリーランスとして独立するのか …

と様々な選択肢があります。

 

どの選択肢が正解なのかを見極めるためにも、選択肢を広げるためにも

自身の価値を知っておくことはとても重要です。

 

TechClips ME では、

職務経歴書をアップロードするだけで企業からのスカウトを受けることができます。

▼▼▼▼▼

▲▲▲▲▲

しかもTechClips MEでは想定年収を企業から提示してくれるので、

自身の価値を数字で分かりやすくたしかめることができます。

 

登録はもちろん完全無料なので、一度登録してみると良いかもしれません。

 

コメント

タイトルとURLをコピーしました