■ はじめに
Pythonの単体試験を行う必要がありそうなので、 Pythonの単体試験のやり方を調べてみた
目次
【1】Python の単体試験 【2】Hello world 【3】トラブルシューティング 1)import でエラーが発生し、単体試験が実行できない 2)ファイル名が英字/アンダーバー以外の場合のインポートでエラー(PEP8チェックで)
【1】Python の単体試験
Ptyhonでは、標準で完備されているらしい
【2】Hello world
https://www.youtube.com/watch?v=dgxEsRC6PNI
を見ながら、一緒にやってみるといいかも。 素数を判定するメソッドの単体試験。
対象ファイル:ut_demo.py
# 素数判定 def is_prime(value: int) -> bool: if (value <= 1): return False for i in range(2, value): if value % i == 0: return False return True if __name__ == '__main__': print(is_prime(5))
単体試験:test_ut_demo.py
import unittest from ut_demo import is_prime class PrimeTest(unittest.TestCase): def test_is_prime_ok(self): for i in [2, 3, 5, 7, 11, 13, 17, 19]: self.assertTrue(is_prime(i)) def test_is_prime_no(self): for i in [1, 4, 6, 8, 9, 10, 12, 14]: self.assertFalse(is_prime(i)) def test_is_prime_negative(self): self.assertFalse(is_prime(-1)) def test_is_prime_raise_typeerror(self): with self.assertRaises(TypeError): is_prime("invalid_value") if __name__ == "__main__": unittest.main()
【3】トラブルシューティング
1)import でエラーが発生し、単体試験が実行できない
対策
try: import boto3 except ImportError: # エラーが発生したら、そのまま流す pass
2)ファイル名が英字/アンダーバー以外の場合のインポートでエラー(PEP8チェックで)
対策
import unittest # importlib.import_module を使用する import importlib target = importlib.import_module('file-handler')
関連記事
単体試験 / unittest ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2021/03/31/000000
単体試験 / 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
基本編 / 関数def
https://dk521123.hatenablog.com/entry/33868934
基本編 / クラス・継承
https://dk521123.hatenablog.com/entry/33865900