のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

Pythonでテストをしてみよう(unittest)

Sponsored Links

皆さんこんにちは
お元気ですか。私は元気です。

本日はunittestについて勉強してみましょう。
unittestとはPythonでのテストのライブラリです。JUnitとかCppUnitが親戚に当たりますね。

Pythonでは標準についているので、昨日使ってみるとかなり便利でした。

以下のコードが例です。今回はaddが正確に動作するかをテストしてみましょう。

import unittest

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

class TestSequenceFunctions(unittest.TestCase):
	def test_add(self):
		result = add(10,10)
		self.assertEqual(20,result)

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

テスト作成手順
①unittest.TestCaseを継承したクラスを作る
②中にメソッドを書く、但しtestを先頭につけた名前でないと動きません。
③メソッドの中にテストしたい内容を書く
今回であればself.assertEqual(20,result)です。何をしているのかといいますと、
渡した結果が20であるかどうかを確認してくれます。

さて、これを動作させてみましょう。特に考えず、普通にコマンドを打ってください。

python test.py
.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK

因みに少しソースコードを変えてわざと失敗してみると・・・

F
======================================================================
FAIL: test_add (__main__.TestSequenceFunctions)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test.py", line 9, in test_add
    self.assertEqual(20,result)
AssertionError: 20 != 30

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (failures=1)

失敗した箇所の実際の値を教えてくれます。

因みに-v optionを利用すると詳細な結果を出力してくれます。

python test.py -v
test_add (__main__.TestSequenceFunctions) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.001s

OK

これを使って良いunittest そして Pythonライフを送ってみましょう