Ответ 1
Вы можете настроить параметр --ignore для вашей конфигурации pytest.ini следующим образом:
addopts = --ignore=setup.py
который должен помочь, если вы находитесь в корневом каталоге и хотите, чтобы py.test игнорировал файл setup.py.
Я пытаюсь запустить py.test
в моем пакете, но он пытается разобрать setup.py
из корневого каталога проекта, даже если я попытался исключить его.
Мне нужно собрать тесты из *.py файлов, потому что тестовые классы включены в модули.
# setup.cfg
[pytest]
norecursedirs = .svn _build tmp* lib/third lib *.egg bin distutils setup.py
python_files = *.py
Еще при запуске py.test
он даст мне ERROR collecting setup.py
, который я уже исключил.
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/core.py:140: in setup
> raise SystemExit, gen_usage(dist.script_name) + "\nerror: %s" % msg
E SystemExit: usage: py.test [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
E or: py.test --help [cmd1 cmd2 ...]
E or: py.test --help-commands
E or: py.test cmd --help
E
E error: no commands supplied
Вы можете настроить параметр --ignore для вашей конфигурации pytest.ini следующим образом:
addopts = --ignore=setup.py
который должен помочь, если вы находитесь в корневом каталоге и хотите, чтобы py.test игнорировал файл setup.py.
В документах (и имени переменной) это выглядит так: norecursedirs
пропускает только каталоги, так как setup.py
- это файл, помещая его в norecursedirs
не имеет никакого эффекта.
http://pytest.org/latest/customize.html?highlight=norecursedirs#confval-norecursedirs
В pytest docs есть ответ, похороненный здесь. Поместите файл conftest.py
в корневой каталог вашего проекта, в котором перечислены файлы, которые вы хотите pytest
игнорировать:
Однако многие проекты будут иметь setup.py, которые они не хотят импортировать. Кроме того, файлы могут быть импортированы только с помощью конкретной версии python. В таких случаях вы можете динамически определять файлы, которые нужно игнорировать, перечисляя их в файле conftest.py:
# content of conftest.py import sys collect_ignore = ["setup.py"]
В Jedi мы решили это, добавив файл conftest.py
с содержимым collect_ignore = ["setup.py"]
. Это делает его "магически" работой.
IMHO py.test должен упростить игнорирование setup.py
, потому что это очень типичный прецедент.