2013-06-07 1 views
13

Когда я создаю unittest.TestCase, я могу определить функцию setUp(), которая будет выполняться перед каждым тестом в этом тестовом случае. Можно ли пропустить setUp() для одного конкретного теста?Можно ли пропустить setUp() для конкретного теста в unittest для python?

Возможно, что желание пропустить setUp() для данного теста не является хорошей практикой. Я довольно новичок в модульном тестировании, и любые предложения по этому вопросу приветствуются.

+0

Пример использования: Я выполняю функциональное тестирование приложения, которое использует внешний API. Почти каждый метод требует, чтобы 'setUp()' аутентифицировался на сервере, за исключением случаев, когда я тестировал функцию 'login()'. –

+0

Связано с [softwareengineering.se]: [* Возможно ли, что методы настройки и разрыва запускаются только для определенных unittests? *] (Https://softwareengineering.stackexchange.com/q/232243/168744) –

ответ

8

docs С (курсив мой):

unittest.TestCase.setUp()

Метод призван подготовить приспособления для испытания. Это вызывается непосредственно перед вызовом метода тестирования; любое исключение, вызванное , этот метод будет считаться ошибкой, а не ошибкой теста. По умолчанию реализация ничего не делает.

Так что, если вам не нужна настройка, не переопределяйте unittest.TestCase.setUp.

Однако, если один из ваших методов test_* не нуждается в настройке, а другие, я бы рекомендовал поместить его в отдельный класс.

+1

i believe @ 7hi4g0 имеет 5 тестов, и из этих 5 тестов он не хочет, чтобы установка запускалась на одном из них. INSTEAD написания двух отдельных тестов, один с настройкой без – TehTris

+0

@TehTris: В этом случае он должен быть отдельным тестовым примером и не смешиваться с другими. –

+0

Я согласен на 100%, но я уверен, что есть хотя бы одна законная причина, чтобы это было возможно. – TehTris

6

В setUp(), self._testMethodName содержит имя теста, который будет выполнен. Конечно, лучше поставить тест на другой класс или что-то еще, конечно, но оно там.

Смежные вопросы