Подтвердить что ты не робот

ERROR собирает setup.py при попытке запустить py.test?

Я пытаюсь запустить 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
4b9b3361

Ответ 1

Вы можете настроить параметр --ignore для вашей конфигурации pytest.ini следующим образом:

addopts = --ignore=setup.py

который должен помочь, если вы находитесь в корневом каталоге и хотите, чтобы py.test игнорировал файл setup.py.

Ответ 3

В pytest docs есть ответ, похороненный здесь. Поместите файл conftest.py в корневой каталог вашего проекта, в котором перечислены файлы, которые вы хотите pytest игнорировать:

Однако многие проекты будут иметь setup.py, которые они не хотят импортировать. Кроме того, файлы могут быть импортированы только с помощью конкретной версии python. В таких случаях вы можете динамически определять файлы, которые нужно игнорировать, перечисляя их в файле conftest.py:


 # content of conftest.py
 import sys

 collect_ignore = ["setup.py"]

Ответ 4

В Jedi мы решили это, добавив файл conftest.py с содержимым collect_ignore = ["setup.py"]. Это делает его "магически" работой.

IMHO py.test должен упростить игнорирование setup.py, потому что это очень типичный прецедент.