鉄は熱いうちに打て
=============================

unittestのテスト前後に実行される処理の確認

2017-12-12

今日の内容は、 Pythonでテストしたい にまとめている内容の詳細部分です。

この本の236ページに書いてある「テスト実行する前後の処理を定義する」表のメソッドを試してみます。

こんな感じで書きました。

実行してみます。

実行結果

setUpClasstearDownClass は1回ずつ、 setUptearDown は2回ずつ呼ばれていますね。

setUpClass
setUp
test_method_1
method_1
tearDown
setUp
test_method_2
method_2
tearDown
tearDownClass
setUpClass msg

失敗させる

テストが失敗するようにちょっと書き換えてみます。

def test_method_2(self):
    print('test_method_2')
    expected = 'method_3'
    actual = self.sample.method_2()
    self.assertEqual(expected, actual)

実行結果

失敗しても、 tearDowntearDownClass も呼ばれていますね。

ssetUpClass
setUp
test_method_1
method_1
tearDown
setUp
test_method_2
method_2
tearDown

Failure
Expected :'method_3'
Actual   :'method_2'
 <Click to see difference>

Traceback (most recent call last):
  File "/Users/kaz/tmp/python_sample/tests/unittest_sample2.py", line 43, in test_method_2
    self.assertEqual(expected, actual)
AssertionError: 'method_3' != 'method_2'
- method_3
?        ^
+ method_2
?        ^


tearDownClass
setUpClass msg

こんな感じですね。

unittest