2010-01-14 10 views

ответ

95

Индивидуальные методы испытаний или классы можно отключить с помощью декоратора 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.

+5

В Python 3, ответ Акифа ниже '@ unittest.SkipTest' работает, а не' @ unittest.skip' – lifebalance

+1

Я использую Python 3.6.1, а '@ unittest.skip' отлично работает. – Pete

+1

@Pete, в Python 3.4.0, '@ unittest.skip' не работает. – lifebalance

2

docs для 2.1 не указывать метод игнорирования или пропуска.

Обычно, я блокирую комментарий при необходимости.

+0

Noufal делает хорошую точку, mangaling имя работает тоже. – Finglas

9

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_")))) 
+0

+1, но во всем проекте, над которым я работаю, все используют python v2.6.2, и я не думаю, что это изменится: /, но это решение, спасибо – coelhudo

+0

Переименование на данный момент. спасибо – coelhudo

+0

Вы можете немного настроить редактор, чтобы дать вам макрос, чтобы включить/отключить тестовый файл, но я говорю как пользователь Emacs, так что ... :) –

22

Вы можете использовать декоратор, чтобы отключить тест, который может обернуть функцию и предотвратить модульное тестирование на 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 
4

Я просто переименовать метод тестового примера с подчеркиванием: test_myfunc становится _test_myfunc.

5

Простое размещение @unittest.SkipTest декоратора над тестом достаточно.

+0

Я не знаю, кто это сделал. Но я читал документацию, и в нем говорится, что SkipTest является исключением. Во всяком случае, он отличается от unittest.skip в том смысле, что пропустить никогда не выполняется тест (его отключить), в то время как цель SkipTest должна быть поднята, если что-то не ожидается во время выполнения теста. Я прав? Интересно круто. – coelhudo

+0

'unittest.skip' (без причины) дает мне ошибку в Python 2, но не в Python 3. – Akif

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

  • Нет связанных вопросов^_^