最近、Ned Batchelderが 彼のPyCon 2016での講演 に注目:
テストの作成に
unittest
を使用している場合は、必ずaddCleanup
を使用してください。tearDown
よりもはるかに優れています。
今まで、私はaddCleanup()
を使用したことがなく、テストの「セットアップ」と「ティアダウン」フェーズのメソッドのsetUp()
/tearDown()
ペアに慣れてきました。
addCleanup()
ではなくtearDown()
に切り替える必要があるのはなぜですか?
また最近ポッドキャスト Robert CollinsによるPythonユニットテスト でも議論されました。
クリーンアップ項目は、(tearDownとは異なり)setUpが失敗した場合でも呼び出されます
addCleanup
を使用して複数の関数を登録できるため、クリーンアップするリソースごとに個別の関数を使用できます。これにより、コードをもう少し再利用可能/モジュール化することができます。
addCleanup()
メソッドは、それらの1つが失敗しても実行され、setUp()
が失敗しても実行されます。 pytest の使用も検討する必要があります。
addCleanup
のもう1つの良い点は、期待どおりに機能することです。
たとえば、それをsetUp
関数で呼び出すと、すべてのテストメソッドが最終的にクリーンアップ関数を呼び出します。
テストメソッドで呼び出す場合、このメソッドのみがクリーンアップ関数を呼び出します。