Как запретить носу импортировать файлы __init__.py? - PullRequest
2 голосов
/ 26 апреля 2011

Может ли инструментарий тестирования nose запускаться только в файлах test_*.py?

Фактически, делаем nosetests A со следующей структурой каталогов:

A/
  test_A.py
  B/
    __init__.py

импортирует B, чего я хочу избежать.

Причина этого заключается в том, что модуль B начинается с import numpy, поскольку он предназначен для использования только в том случае, если у пользователя установлен дополнительный модуль NumPy. Однако пользователи, которые не установили NumPy, не хотят, чтобы тесты носа обрабатывали B/__init__.py, потому что он обязательно завершается с ошибкой import numpy, даже если NumPy не является обязательным. Как этого достичь?

Ответы [ 4 ]

4 голосов
/ 26 апреля 2011

Просто оберните импорт блоком try:..except ImportError:.... В этом случае вы даже можете установить переменную, сообщающую, доступен ли numpy или нет.

2 голосов
/ 27 апреля 2011

Конечно, просто используйте параметры командной строки --match и --exclude, чтобы ограничить то, что нос обнаружит в качестве тестовой программы.

1 голос
/ 17 января 2013

Nose может принимать / отклонять тесты на уровне каталогов, файлов, модулей, классов и методов.Вам необходимо отклонить каталог B .Нет способа игнорировать файл __init__.py;Python никогда не видит этого.Отображается при импорте B, поэтому вам нужно игнорировать B.

Попробуйте:

nosetests --exclude=B
0 голосов
/ 09 октября 2013

Я думаю, что плагин для исключения носа может помочь. Если вы установите этот плагин и затем запустите:

    nosetests --exclude-dir B

Это может сработать для вас. У меня та же проблема, и я добился некоторых приемлемых результатов. Теперь моя следующая проблема заключается в том, что exclude-dir не представляется пригодным для использования при создании файла конфигурации для проверки носа.

...