BETA

Python標準モジュール【unittest】の使い方

投稿日:2018-10-23
最終更新:2018-10-24
※この記事は外部サイト(http://doboku-it-engineer.com/programming/...)からのクロス投稿です

unittestって?

unittestは自身の書いたコード(関数)をテストするためのpython標準モジュールです。

書いた関数の戻り値と、期待値を比較して想定している結果となっているかを判断してくれる便利なモジュールです。

pythonに標準でインストールされているので、import unittestですぐに使用可能です。

参考サイト:26.4. unittest ユニットテストフレームワーク

使い方

pythonドキュメントに記載されていたサンプルスクリプトを例に取ってみましょう。

import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())

    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        with self.assertRaises(TypeError):
            s.split(2)

if __name__ == '__main__':
    unittest.main()

上から順に ①unittest モジュールのimport

②unittest.TestCaseを継承したクラスTestHOGEの作成

(必須では無いが、慣例としてクラスの頭にはHOGEをつける)

③テストを行いたいメソッドの頭にtest_をつける。これによってテストを行うメソッドが検索されるため必ずつける。

④assert文を用いて想定した結果と実行した結果を比較します。代表的なassert文には以下のようなものがあります。

assertEqual(a , b)    a == b(aとbがイコールかどうか)
assertNotEqual(a , b)    a != b(aとbがイコールではないかどうか)
assertTrue(x)    x == True(xがTrueを返すかどうか)
assertFalse(x)    x == False(xがFalseを返すかどうか)
assertRaises(HogeError)    想定したエラーが発生するかどうか

⑤以下の記述で書いたテストを実行

if __name__ == '__main__':
unittest.main()

以上でunittestモジュールによるテストを実行できます。

詳しくは上記の参考サイトをご覧ください。

補足

# upper()メソッド:文字列を全て大文字にする

>>>"abc".upper()
"ABC"

# isupper()メソッド:全てが大文字かどうか判定する

>>>"Abc".isupper()
"False"

>>>"ABC".isupper()
"True"

# split()メソッド:文字列を引数に取った記号で分割し、リストにする
# 引数に何も指定しない場合はスペースやタブで自動的に分割

>>>a = "orange,apple,banana"

>>>a.split(",")
>>>[orange, apple, banana]
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

Python (Django)・JavaScript(Vue.js)・GISについて書いていきます。 たまにちゃんとした記事も書きますが、基本的には自分用のメモを残していきます

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!