Как отдельные временные тесты могут быть временно отключены при использовании модуля unittest
в Python?
Временно отключать отдельные тестовые тесты Python
Ответ 1
Индивидуальные методы тестирования или классы могут быть отключены с помощью unittest.skip
decorator.
@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.')
Другие параметры см. в документах для Пропуск тестов и ожидаемых отказов.
Ответ 2
Вы можете использовать декораторы для отключения теста, который может обернуть функцию и предотвратить запуск googletest или python unit test для запуска тестового файла.
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
Ответ 3
Последняя версия (2.7 - unreleased) поддерживает пропущение/отключение теста таким образом. Вы можете просто получить этот модуль и использовать его на существующей установке Python. Это, вероятно, будет работать.
До этого я использовал переименование тестов, которые я хотел пропустить до xtest_testname
от test_testname
.
Здесь для быстрого удаления script. Мой 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_"))))
Ответ 4
Просто размещение декоратора @unittest.SkipTest
над тестом достаточно.
Ответ 5
Я просто переименовываю метод тестового примера с подчеркиванием: test_myfunc становится _test_myfunc.
Ответ 6
docs для 2.1 не указывает метод игнорирования или пропуска.
Обычно, я блокирую комментарий при необходимости.
Ответ 7
Сосредоточив внимание на "временно отключенной" части вопроса, лучший ответ в некоторой степени зависит от варианта использования. Сценарий использования, который привел меня сюда, заключается в том, что я выполняю тестовую разработку функции. В этом процессе я последовательно пишу тесты и часто использую точки останова в функции для отладки. Если я просто запускаю все тесты каждый раз, когда запускаю тестировщика, я останавливаюсь в точках останова для тестов, которые уже работают. Добавление "пропуска" или изменение названия теста или чего-то подобного - это не то, что я хочу, потому что, когда я закончу писать функцию, я хочу, чтобы все тесты выполнялись. Если бы я использовал "пропустить", мне пришлось бы вернуться и "отменить".
Для моего варианта использования решение заключается в тестовом прогоне, а не в тестовом коде. Я использую Pytest. С помощью pytest можно легко определить один тест из командной строки:
pytest PYTHON_FILENAME.TEST_CLASS.TEST_NAME
(замените заглавные буквы своими значениями).
Я понимаю, что этот вопрос был для python-unitest. Я не использовал это в течение длительного времени. Я бы не удивился, если бы у него было что-то похожее на pytest. Если нет, вы можете легко переключиться на pytest. Вам не нужно изменять свой код. Просто установите его и измените команду для запуска теста.
Также я использую PyCharm Pro. На странице с моим тестовым кодом рядом с определением для каждого теста есть маленькая иконка. Я могу нажать на этот значок и запустить этот тест по отдельности.
Ответ 8
если это pytest, то вы можете пропустить его так: @pytest.mark.skip("причина пропуска")