🐍

【Python】Unittestで__init__を定義したらエラーになった

2024/10/01に公開

事象

Pythonでテストコードを実行するためのフレームワークunittestを使ってテストを実行した際に、

'TestPreProcess' object has no attribute '_testMethodName'

というエラーが発生した。

原因

__init__メソッドを定義したことで、継承したクラス(unittest.TestCase)のコンストラクタを適切に呼び出せていない。

class TestSample(unittest.TestCase):
    def __init__(self):
        # 初期化コード

解決方法

__init__の引数methodNamerunTestを指定し、スーパークラスのコンストラクタを呼び出す。

class TestSample(unittest.TestCase):
    def __init__(self, methodName='runTest'):
        super(TestPreProcess, self).__init__(methodName)
        # 初期化コード

なお、unittestでテスト実施前に行いたい処理にはsetUp()を使うことが推奨されている。

Discussion