■ はじめに
https://dk521123.hatenablog.com/entry/2019/10/02/223658
の続き。 今回は、Python標準 unittest の 基本的な機能をメモする
目次
【1】基本的なテンプレート 【2】出力値の確認 1)構文 【3】前処理・後処理 1)前処理:setUp/setUpClass 2)後処理:tearDown/tearDownClass 3)サンプル
【1】基本的なテンプレート
import unittest # from 【対象ファイル】 import 【対象メソッド】 from sample import is_prime # clsss 【ファイル名】Test(unittest.TestCase): class SampleTest(unittest.TestCase): # テストを書いていく def test_is_prime_yes(self): for i in [2, 3, 5, 7, 11, 13, 17, 19]: self.assertTrue(is_prime(i)) # ... if __name__ == '__main__': unittest.main()
【2】出力値の確認
1)構文
# 期待値と同じかどうか self.assertEqual(【値1】, 【値2】) # boolean self.assertTrue(【Boolean値】) self.assertFalse(【Boolean値】)
# | メソッド | 説明 |
---|---|---|
1 | assertEqual(a, b) | a == b |
2 | assertNotEqual(a, b) | a != b |
3 | assertTrue(a) | bool(a) == True |
4 | assertFalse(a) | bool(a) == False |
5 | assertIs(a, b) | a is b |
6 | assertIsNot(a, b) | a is not b |
7 | assertIsNone(a) | a is None |
8 | assertIsNotNone(a) | a is not None |
9 | assertIn(a, b) | a in b |
10 | assertNotIn(a, b) | a not in b |
11 | assertIsInstance(a, b) | is instance(a, b) |
12 | assertNotIsInstance(a, b) | not is instance(a, b) |
13 | assertRaises(exceptionA) | 例外 exceptionA が発生したか |
【3】前処理・後処理
* 以下の順序で実行される [1] setUpClass [2] setUp [3] tearDown *[2]に行き、試験項目でループ [4] tearDownClass が実行
https://qiita.com/Go-zen-chu/items/ddfe37c00324b1b8941e
1)前処理:setUp/setUpClass
setUp
* 1テストごとの実行前に毎回呼ばれる
setUpClass
* テストクラスの実行前に1回呼ばれる
2)後処理:tearDown/tearDownClass
tearDown
* 1テストごとの実行後に毎回呼ばれる
tearDownClass
* テストクラスの実行前に1回呼ばれる
3)サンプル
import unittest class DemoTest(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 test_say_hello_1(self): expected = 'Hello World!!' actual = say_hello() self.assertEqual(expected, actual) def test_say_hello_2(self): expected = 'Hello Mike!!' actual = say_hello('Mike') self.assertEqual(expected, actual) def say_hello(name:str = "World"): return f"Hello {name}!!" if __name__ == '__main__': unittest.main()
出力結果
setUpClass setUp tearDown .setUp tearDown .tearDownClass ---------------------------------------------------------------------- Ran 2 tests in 0.003s OK
参考文献
https://code-schools.com/python-unittest/
https://www.python.ambitious-engineer.com/archives/828
関連記事
単体試験 / unittest ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/02/223658
単体試験 / unittest ~ mock編 ~
https://dk521123.hatenablog.com/entry/2021/04/05/165656
単体試験 / unittest ~ あれこれ編 ~
https://dk521123.hatenablog.com/entry/2022/07/30/154233
単体試験 / mox ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/01/19/000000
単体試験 / nose ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/01/20/221014
単体試験 / pytest ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/12/13/224810