我正在尝试在我的程序包上运行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
答案 0 :(得分:19)
您可以为pytest.ini配置配置--ignore选项,如下所示:
addopts = --ignore=setup.py
如果您在根目录中并希望py.test忽略setup.py文件,这应该会有所帮助。
答案 1 :(得分:2)
从文档(和变量名称)看起来norecursedirs
只会跳过目录,因此setup.py
是一个文件,将其放在norecursedirs
中无效。< / p>
http://pytest.org/latest/customize.html?highlight=norecursedirs#confval-norecursedirs
答案 2 :(得分:1)
pytest文档将答案隐藏起来here.将conftest.py
文件放在项目的根目录中,列出您希望pytest
忽略的文件:
但是,许多项目都有一个不想导入的setup.py。此外,可能只有特定python版本可以导入的文件。对于这种情况,您可以通过将它们列在conftest.py文件中来动态定义要忽略的文件:
# content of conftest.py import sys collect_ignore = ["setup.py"]
答案 3 :(得分:0)
在Jedi中,我们通过添加内容为conftest.py
的{{1}}文件解决了这个问题。这使它“神奇地”起作用。
恕我直言py.test应该更容易忽略collect_ignore = ["setup.py"]
,因为这是一个非常典型的用例。