Исключение каталога, модуля в nosetest python

Мы используем нос, чтобы обнаружить тесты и запустить их. Все тесты написаны в TestCase совместимом режиме, так что любой тестовый бегун может запускать. Проблема в том, что у нас есть некоторые каталоги, которые не имеют никакого теста. Но тестовый бегун продолжает обнаруживать тест оттуда. Если в одном из этих каталогов много файлов, они застряли. Итак, как я могу исключить этот каталог?

В настоящее время я выполняю

nosetests --processes=10 --verbosity 2

Но есть каталог под названием scripts, который требует времени для обнаружения тестов. Поэтому я хочу исключить его. Я попробовал

nosetests --processes=10 --verbosity 2 --exclude='^scripts$'

Но не повезло.

Ответ 1

Существует специально для этой задачи плагин nose-exclude:

nose-exclude - это плагин Nose, который позволяет легко указать каталоги, которые должны быть исключены из тестирования.

Среди других функций он вводит новый аргумент командной строки под названием exclude-dir:

nosetests --processes=10 --verbosity 2 --exclude-dir=/path/to/scripts

Вместо передачи аргумента командной строки вы также можете установить переменную среды NOSE_EXCLUDE_DIRS или установить конфигурационный ключ exclude-dir в .noserc или nose.cfg файлах.

Ответ 2

Вы также можете использовать аргумент --ignore-files для исключения определенных файлов. Поскольку это использует регулярные выражения, вы можете назвать свои файлы внутри вашей папки scripts/, чтобы начать с определенного префикса, который затем можно использовать для соответствия в регулярном выражении.

# Exclude just one test file
nosetests your_package --ignore-files="tests_to_exclude\.py" -v
# Exclude all python scripts beginning with `testskip_`
nosetests your_package --ignore-files="testskip_.+\.py" -v

Смотрите: Документация по носу.