Как отдельные модульные тесты могут быть временно отключены при использовании модуля unittest
в Python?Временно отключить отдельные тестовые тесты Python
ответ
Индивидуальные методы испытаний или классы можно отключить с помощью декоратора 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.')
Другие варианты см. В документах для Skipping tests and expected failures.
The latest version (2.7 - unreleased) supports test skipping/disabling like so. Вы можете просто получить этот модуль и использовать его на существующей установке 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_"))))
+1, но во всем проекте, над которым я работаю, все используют python v2.6.2, и я не думаю, что это изменится: /, но это решение, спасибо – coelhudo
Переименование на данный момент. спасибо – coelhudo
Вы можете немного настроить редактор, чтобы дать вам макрос, чтобы включить/отключить тестовый файл, но я говорю как пользователь Emacs, так что ... :) –
Вы можете использовать декоратор, чтобы отключить тест, который может обернуть функцию и предотвратить модульное тестирование на googletest или питона, чтобы запустить TestCase.
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
Я просто переименовать метод тестового примера с подчеркиванием: test_myfunc становится _test_myfunc.
Простое размещение @unittest.SkipTest
декоратора над тестом достаточно.
Я не знаю, кто это сделал. Но я читал документацию, и в нем говорится, что SkipTest является исключением. Во всяком случае, он отличается от unittest.skip в том смысле, что пропустить никогда не выполняется тест (его отключить), в то время как цель SkipTest должна быть поднята, если что-то не ожидается во время выполнения теста. Я прав? Интересно круто. – coelhudo
'unittest.skip' (без причины) дает мне ошибку в Python 2, но не в Python 3. – Akif
В Python 3, ответ Акифа ниже '@ unittest.SkipTest' работает, а не' @ unittest.skip' – lifebalance
Я использую Python 3.6.1, а '@ unittest.skip' отлично работает. – Pete
@Pete, в Python 3.4.0, '@ unittest.skip' не работает. – lifebalance