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

时间:2012-05-29 17:57:47

标签: python setuptools pytest tox

我正在尝试在我的程序包上运行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

4 个答案:

答案 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"],因为这是一个非常典型的用例。