繁体   English   中英

错误在尝试运行py.test时收集setup.py?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM