Ответы:
Отдельные методы или классы тестирования можно отключить с помощью unittest.skip
декоратора.
@unittest.skip("reason for skipping")
def test_foo():
print('This is foo test case.')
@unittest.skip # no reason needed
def test_bar():
print('This is bar test case.')
Другие варианты см. В документации по пропуску тестов и ожидаемым сбоям .
@unittest.skip
тоже отлично работает.
@unittest.skip
не работает.
Вы можете использовать декораторы, чтобы отключить тест, который может обернуть функцию и предотвратить запуск тестового примера с помощью модульного теста googletest или python.
def disabled(f):
def _decorator():
print f.__name__ + ' has been disabled'
return _decorator
@disabled
def testFoo():
'''Foo test case'''
print 'this is foo test case'
testFoo()
Вывод:
testFoo has been disabled
Последняя версия (2.7 - неизданная) поддерживает пропуск / отключение тестов вот так . Вы можете просто получить этот модуль и использовать его в существующей установке Python. Вероятно, это сработает.
До этого я использовал переименовать тесты я хотел обезателен xtest_testname
с test_testname
.
Вот быстрый сценарий elisp для этого. Мой elisp немного заржавел, поэтому заранее прошу прощения за любые проблемы. Непроверенные.
(defun disable_enable_test ()
(interactive "")
(save-excursion
(beginning-of-line)
(search-forward "def")
(forward-char)
(if (looking-at "disable_")
(zap-to-char 1 ?_)
(insert "disable_"))))
Достаточно просто разместить @unittest.SkipTest
декоратор над тестом.
unittest.skip
(без причины) дает мне ошибку в Python 2, но не в Python 3.
В документации для 2.1 не указан метод игнорирования или пропуска.
Однако обычно я блокирую комментарии, когда это необходимо.
Сосредоточившись на части вопроса о «временно отключенной», лучший ответ в некоторой степени зависит от варианта использования. Пример использования, который привел меня сюда: я занимаюсь разработкой функции на основе тестов. В этом процессе я последовательно пишу тесты и часто использую точки останова в функции для отладки. Если я просто запускаю все тесты каждый раз, когда запускаю средство запуска тестов, я останусь в точках останова для тестов, которые уже работают. Добавление «пропуска» или изменение имени теста или чего-то подобного - это не то, что я хочу, потому что, когда я закончу писать функцию, я хочу, чтобы все тесты выполнялись. Если бы я использовал «пропустить», мне пришлось бы вернуться и «отменить».
В моем случае решение заключается в средстве выполнения тестов, а не в коде теста. Я использую pytest . С pytest легко указать один тест из командной строки:
pytest PYTHON_FILENAME.TEST_CLASS.TEST_NAME
(замените заглавные буквы своими значениями).
Я понимаю, что этот вопрос был для python-unitest. Я давно этим не пользовался. Я бы не удивился, если бы в нем было что-то похожее на pytest. Если нет, вы можете легко переключиться на pytest. Вам не нужно изменять свой код. Просто установите его и измените команду запуска тестов.
Также я использую PyCharm Pro. На странице, на которой показан мой тестовый код, есть небольшой значок рядом с def для каждого теста. Я могу щелкнуть этот значок и запустить этот тест индивидуально.
@unittest.SkipTest
работает, а не@unittest.skip