![](/img/trans.png)
[英]How to run py.test and linters in `python setup.py test`
[英]ERROR collecting setup.py while trying to run 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
我已经排除的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
您可以为pytest.ini配置配置--ignore选项,如下所示:
addopts = --ignore=setup.py
如果你在根目录并希望py.test忽略setup.py文件,这应该会有所帮助。
从文档(和变量的名称)看起来norecursedirs
只跳过目录,所以由于setup.py
是一个文件,将它放在norecursedirs
中没有任何效果。
http://pytest.org/latest/customize.html?highlight=norecursedirs#confval-norecursedirs
pytest文档将答案埋没在这里。 将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"]
。 这使它“神奇地”工作。
恕我直言py.test应该更容易忽略setup.py
,因为这是一个非常典型的用例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.