Python_単体テストの作成と実行
unittestについて
unittest とは
Pythonでユニットテストを行うにはunittestモジュールを利用することが一般的です。
unittestの最小構成のテストケース
最小構成のテストケースは以下の通りです。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# vim:fileencoding=utf-8
# coding=utf8
import unittest
class UnitTest(unittest.TestCase):
def test1(self):
self.assertEqual(1, 1)
if __name__ == '__main__':
unittest.main()
評価を実行するには、スクリプトを実行します。
$ python testcases.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
unittestの作成
unittestのメソッド
asset系メソッドが下記のように用意されています。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# vim:fileencoding=utf-8
# coding=utf8
import unittest
class UnitTest(unittest.TestCase):
def test1(self):
self.assertEqual(1, 1) # a == b
self.assertNotEqual(1, 2) # a != b
self.assertTrue(1 == 1) # bool(x) is True
self.assertFalse(1 == 2) # bool(x) is False
self.assertIs(self, self) # a is b
self.assertIsNot([1, 2, 3], [1, 2, 3]) # a is not b
self.assertIsNone(None) # x is None
self.assertIsNotNone((1, 2, 3)) # x is not None
self.assertIn(3, [1, 2, 3]) # a in b
self.assertNotIn(4, [1, 2, 3]) # a not in b
self.assertIsInstance("a", str) # a is instance of b
self.assertNotIsInstance("a", int) # a is not instance of b
if __name__ == '__main__':
unittest.main()
初期化時と終了時
テスト実行前・実行後に実行する処理を定義できます。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# vim:fileencoding=utf-8
# coding=utf8
import unittest
def setUpModule():
print('setUpModuleはTest全体初期化時に実行します。')
def tearDownModule():
print('tearDownModuleはTest全体終了時に実行します。')
class UnitTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('setUpClassはテストケース初期化時に実行します。')
@classmethod
def tearDownClass(cls):
print('tearDownClassはテストケース終了時に実行します。')
def setUp(self):
print('setUpはテスト初期化時に実行します。')
def tearDown(self):
print('tearDownはテスト完了時に実行します。')
def test1(self):
print('test1を実行します。')
self.assertEqual(1, 1)
def test2(self):
print('test2を実行します。')
self.assertEqual(1, 1)
if __name__ == '__main__':
unittest.main()