Відповіді:
Індивідуальні методи тестування або заняття можна відключити за допомогою 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 unit.
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 для цього. Мій елісп трохи іржавий, тому я заздалегідь вибачаюся за будь-які проблеми. Неперевірений.
(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 не ставлять ігнорувати або пропустити метод.
Зазвичай я блокую коментар, коли це потрібно.
Орієнтуючись на "тимчасово відключену" частину питання, найкраща відповідь дещо залежить від випадку використання. Випадок використання, який мене привів сюди, - це те, що я роблю тестові розробки функції. У цьому процесі я послідовно пишу тести і часто використовую точки перерви у функції для налагодження. Якщо я просто запускаю всі тести кожного разу, коли запускаю тестовий бігун, я зупиняюсь на точках перерви для тестів, які вже працюють. Додавання "пропустити" або змінити ім'я тесту чи щось подібне - це не те, що я хочу, тому що коли я закінчую писати функцію, я хочу, щоб усі тести запускалися. Якби я використав "пропустити", я повинен був би повернутися назад і "unskip".
У моєму випадку використання рішення лежить у тестовому запуску, а не в тестовому коді. Я використовую pytest . За допомогою pytest легко вказати один тест з командного рядка:
pytest PYTHON_FILENAME.TEST_CLASS.TEST_NAME
(замініть літери на ваші значення).
Я розумію, що це питання було для python-unitest. Я цим не користувався давно. Я не був би здивований, якби в ньому було щось схоже на пістест. Якщо ні, ви можете легко перейти на пітест. Вам не потрібно змінювати свій код. Просто встановіть його та змініть команду тестового бігуна.
Також я використовую PyCharm Pro. На сторінці, що показує мій тестовий код, поруч із def для кожного тесту є невеликий значок. Я можу натиснути цей значок і запустити тест окремо.
@unittest.SkipTest
@unittest.skip