2012-05-29 18 views
13

Estoy tratando de ejecutar py.test en mi paquete, pero está tratando de analizar setup.py desde el directorio raíz del proyecto, incluso si traté de excluirlo.¿ERROR que recolecta setup.py mientras intenta ejecutar py.test?

Necesito recopilar las pruebas de los archivos * .py porque las clases de prueba están incluidas en los módulos.

# setup.cfg 
[pytest] 
norecursedirs = .svn _build tmp* lib/third lib *.egg bin distutils setup.py 
python_files = *.py 

Aún cuando corro py.test me sentará ERROR collecting setup.py que ya excluidos.

/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 

Respuesta

19

Puede configurar la opción --ignore a la configuración pytest.ini como esto quizá:

addopts = --ignore=setup.py 

que debería ayudar si se encuentra en el directorio raíz y quiere py.test a ignore el archivo setup.py

+0

Maldición, significa que si tengo otro 'setup.py' también se incluirá. Además, tox no puede buscar tox.ini en los directorios principales? – sorin

+1

Para evitar la inclusión de otros archivos setup.py, creo que pytest.ini necesitaría una forma de permitir especificar ubicaciones exactas como --ignore = {inidir} /setup.py o más. – hpk42

2

A partir de los documentos (y el nombre de la variable) Parece que sólo se salta norecursedirs directorios, por lo que desde setup.py es un archivo, poniéndolo en norecursedirs no tiene ningún efecto.

http://pytest.org/latest/customize.html?highlight=norecursedirs#confval-norecursedirs

+0

Gracias, para el reetiquetado ella. Aún así, esto no resuelve mi problema. A partir de estos, supongo que es imposible evitar que 'py.test' cargue' setup.py' si quiere buscar '* .py'. Todavía aparece el error porque 'py.test' está intentando ejecutar' setup.py'. Tal vez haya algo que pueda hacer con setup.py para que sea 'py.test' amigable. – sorin

0

En Jedi hemos resuelto esto agregando un archivo conftest.py con el contenido de collect_ignore = ["setup.py"]. Eso lo hace funcionar "mágicamente".

IMHO py.test debería hacer que sea más fácil ignorar setup.py, porque ese es un caso de uso muy típico.

1

Los documentos PYtest tienen la respuesta enterrado distancia here. poner un archivo conftest.py en el directorio raíz del proyecto que enumera los archivos que desea ignorar pytest:

Sin embargo, muchos proyectos tendrán un setup.py que no quieren ser importados Además, puede haber archivos solo importables por una versión específica de Python. Para tales casos se puede definir de forma dinámica archivos para ser ignorado, mediante su inclusión en un archivo conftest.py:


# content of conftest.py 
import sys 

collect_ignore = ["setup.py"] 

Cuestiones relacionadas