【Python】unittestの使い方 アサーションメソッド

2021年2月14日

この記事はPython標準のunittestの基本的な使い方についての備忘録です。

アサーションメソッドの使い方や種類について記載します。

開発環境

今回は以下の環境でunittestを実装していきます。

Python 3.7.7
OS:windows10
IDE:Visual Studio Code

アサーションメソッドとは

アサーションメソッドとは、テストの実行結果が想定通りの結果となっているか確認するためのメソッドです。

以下のテストコードの17行目と24行目に書いているのが、アサーションメソッドです。


from unittest import TestCase

from sample import SampleClass


class SampleClassTest(TestCase):
    """SampleClassのテストクラス"""
    def setUp(self):
        self.sample = SampleClass()

    def test_calc_adder(self):
        """calc_adderメソッドのテスト"""
        result = self.sample.calc_adder(num1=10, num2=5)

        // 実行結果が15であることを確認
        self.assertEqual(result, 15)

    def test_calc_divide(self):
        """calc_divideメソッドのテスト"""
        result = self.sample.calc_divide(num1=10, num2=5)

        // 実行結果が2であることを確認
        self.assertEqual(result, 2)

    def tearDown(self):
        del self.sample

上記のテストコードでは、実行結果が想定の値と一致しているかを確認するためにassertEqualというアサーションメソッドを使用しています。
アサーションメソッドには、他にも実行結果と想定値を比較するためのメソッドがたくさん用意されています。

アサーションメソッドの種類

アサーションメソッドはたくさんの種類がありますが、今回は実際に業務で使用したメソッドをまとめました。
ここに記載したのは一部のメソッドだけなので、詳しく知りたい方は公式ドキュメントをご参照ください。

公式ドキュメント(version 3.7)はこちら

assertEqual

[使い方]

assertEqual(a, b, msg)

※msgは省略可能。

[解説]
a = bの場合にテスト成功となる。
msgに文字列を設定すると、テスト失敗時にmsgに設定した文字列が表示されます。
msgに何も設定していない場合は、メッセージが表示されません。

assertNotEqual

[使い方]

assertNotEqual(a, b, msg)

※msgは省略可能。

[解説]
a != bの場合にテスト成功となる。
msgに文字列を設定すると、テスト失敗時にmsgに設定した文字列が表示されます。
msgに何も設定していない場合は、メッセージが表示されません。

assertTrue

[使い方]

assertTrue(a, msg=None)

※msgは省略可能。

[解説]
bool(a) is Trueの場合にテスト成功となる。
msgに文字列を設定すると、テスト失敗時にmsgに設定した文字列が表示されます。
msgに何も設定していない場合は、メッセージが表示されません。

assertFalse

[使い方]

assertFalse(a, msg=None)

※msgは省略可能。

[解説]
bool(a) is Falseの場合にテスト成功となる。
msgに文字列を設定すると、テスト失敗時にmsgに設定した文字列が表示されます。
msgに何も設定していない場合は、メッセージが表示されません。

assertIsNone

[使い方]

assertIsNone(a, msg=None)

※msgは省略可能。

[解説]
a is Noneの場合にテスト成功となる。
msgに文字列を設定すると、テスト失敗時にmsgに設定した文字列が表示されます。
msgに何も設定していない場合は、メッセージが表示されません。

assertGreater

[使い方]

assertGreater(a, b, msg=None)

※msgは省略可能。

[解説]
a > bの場合にテスト成功となる。
msgに文字列を設定すると、テスト失敗時にmsgに設定した文字列が表示されます。
msgに何も設定していない場合は、メッセージが表示されません。

assertGreaterEqual

[使い方]

assertGreaterEqual(a, b, msg=None)

※msgは省略可能。

[解説]
a >= bの場合にテスト成功となる。
msgに文字列を設定すると、テスト失敗時にmsgに設定した文字列が表示されます。
msgに何も設定していない場合は、メッセージが表示されません。

assertLess

[使い方]

assertLess(a, b, msg=None)

※msgは省略可能。

[解説]
a < bの場合にテスト成功となる。
msgに文字列を設定すると、テスト失敗時にmsgに設定した文字列が表示されます。
msgに何も設定していない場合は、メッセージが表示されません。

assertLessEqual

[使い方]

assertLessEqual(a, b, msg=None)

※msgは省略可能。

[解説]
a <= bの場合にテスト成功となる。
msgに文字列を設定すると、テスト失敗時にmsgに設定した文字列が表示されます。
msgに何も設定していない場合は、メッセージが表示されません。

assertIn

[使い方]

assertIn(a, container, msg=None)

※msgは省略可能。

[解説]
a in containerの場合にテスト成功となる。
msgに文字列を設定すると、テスト失敗時にmsgに設定した文字列が表示されます。
msgに何も設定していない場合は、メッセージが表示されません。

assertNotIn

[使い方]

assertNotIn(a, container, msg=None)

※msgは省略可能。

[解説]
a not in containerの場合にテスト成功となる。
msgに文字列を設定すると、テスト失敗時にmsgに設定した文字列が表示されます。
msgに何も設定していない場合は、メッセージが表示されません。

assertIsInstance

[使い方]

assertIsInstance(obj, cls, msg=None)

※msgは省略可能。

[解説]
objclsのインスタンスである場合にテスト成功となる。
msgに文字列を設定すると、テスト失敗時にmsgに設定した文字列が表示されます。
msgに何も設定していない場合は、メッセージが表示されません。

まとめ

今回はアサーションメソッドについて記載しました。
当記事に記載したメソッドはごく一部で、使ったことがないアサーションメソッドもたくさんあるので、それについても勉強していきたいですね。

参考文献

実際に作業を実施した際には、以下のサイトを参考にさせていただきました。

・公式ドキュメント(version 3.7)
https://docs.python.org/ja/3.7/library/unittest.html


unittestの使い方については、他にもいろいろ記載しています。
よろしければ見ていってください。