Я использую нос для тестирования.Я знаю, как пропустить тестирование, но мне было интересно, есть ли простое решение написать декоратор для пропуска тестов, когда какой-то модуль не импортирован.
Сейчас я пытаюсь импортировать mock и поймать ImportError
, если он не установлен и установить mock = None
.В начале тестов, требующих макета, я использую if not mock: raise SkipTest()
в качестве 1-й строки.
Это работает хорошо.Мне просто интересно, возможно ли это и с декоратором?
Обновление
Я уже давно пользуюсь ответом kindall , просто чтобы сегодня заметить, что это все еще не работает правильно (по крайней мере, не в всех случаях!
Кажется, что работает, когда я использую тестовую функцию, то есть негенератор (не содержит оператора yield
). Всякий раз, когда я использую декоратор в тестовой функции, которая использует yield
, тест проходит независимо от того, произойдет ли сбой assert
в полученной функции.
Есть идеи, почему это происходит и как предотвратить такое поведение?