Подтвердить что ты не робот

addCleanup против tearDown

Недавно Нед Батчелдер во время своего выступления на PyCon 2016 отметил:

Если вы используете unittest для написания своих тестов, обязательно используйте addCleanup, это намного лучше, чем tearDown.

До сих пор я никогда не использовал addCleanup() и привык к setUp()/tearDown() для тестирования фаз "установки" и "разрушения".

Почему я должен переключиться на addCleanup() вместо tearDown()?


Это также недавно обсуждалось в тесте Python с подкастом Роберта Коллинза.

4b9b3361

Ответ 1

В строке addCleanup doc:

Элементы очистки вызываются, даже если setUp терпит неудачу (в отличие от tearDown)

addCleanup может использоваться для регистрации нескольких функций, поэтому вы можете использовать отдельные функции для каждого ресурса, который вы хотите очистить. Это позволит код будет несколько более многоразовым/модульным.

Ответ 2

addCleanup() будут запускаться даже в случае сбоя одного из них и даже в случае setUp(). Вы также должны рассмотреть возможность использования pytest.

Ответ 3

Еще одна хорошая вещь о addCleanup заключается в том, что она работает так, как вы ожидали.

Например, если вы вызываете его в функции setUp, тогда все методы тестирования вызовут функцию очистки в конце.

Если вы вызываете его в методе тестирования, только этот метод вызывает функцию очистки.