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からであれば、試し読みもできるので、一度見てみるのもオススメです。

 

また、Pythonについて基礎から学ぶのであれば、オンラインスクールがオススメです。


オンラインスクールで学習すると、講義も分かりやすく、
サポート体制もしっかりしているので、これからPythonを学ぶ人にもオススメです。


オンラインで無料レッスンを体験することもできるので、
自分にあっているかどうかを確かめることができます。


オススメは以下の3つです。
どのスクールも無料体験が用意されているので、
契約前に自分に最適なスクールを探すことができるでしょう。

✔️オススメのプログラミングスクール ベスト3

プログラミングスクールについては「プログラミングスクールで失敗しないためには【オススメベスト3も紹介】」の記事でも紹介しています。


気になった方はぜひチェックしてみて下さい〜!

コメント

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