unittest test run example assert_equal python virtualenv nose nosetests

run - testing python



Problemas al usar la nariz en un virtualenv (8)

¿Eres capaz de ejecutar myenv/bin/python /usr/bin/nosetests ? Eso debería ejecutar Nose utilizando el conjunto de bibliotecas del entorno virtual.

No puedo usar la nariz (nosetests) en un proyecto virtualenv; parece que no puede encontrar los paquetes instalados en el entorno virtualenv.

Lo extraño es que puedo configurar

test_suite = ''nose.collector''

en setup.py y ejecutar las pruebas muy bien como

python setup.py test

pero cuando se ejecutan pruebas directas, hay todo tipo de errores de importación.

Lo probé con una instalación de nariz en todo el sistema y un paquete de nariz virtualenv y sin suerte.

¿Alguna idea?

¡¡Gracias!!


En la misma situación, necesitaba volver a cargar el virtualenv para que la ruta se actualizara correctamente:

deactivate env/bin/activate


Es posible que tenga un nosetests instalado en otro lugar de su PATH con una prioridad mayor que la instalada en su Virtualenv. Una forma rápida de nosetests módulo de la nose y el guión de nosetests asociado instalado en su principal prioridad actual de virtualenv es editar su PATH :

export PATH=/path/to/current/virtualenv/bin:$PATH


Esto es lo que funciona para mí:

$ virtualenv --no-site-packages env1 $ cd env1 $ source bin/activate # makes "env1" environment active, # you will notice that the command prompt # now has the environment name in it. (env1)$ easy_install nose # install nose package into "env1"

setup.py un slither paquete realmente básico que tenía, en su setup.py , el mismo atributo test_suite que mencionaste anteriormente. Luego coloqué el origen del paquete bajo env1/src .

Si mirabas dentro de env1/src , env1/src :

slither/setup.py slither/slither/__init__.py slither/slither/impl.py # has some very silly code to be tested slither/slither/tests.py # has test-cases

Puedo ejecutar las pruebas usando el subcomando de test :

(env1)$ pushd src/slither (env1)$ python setup.py test # ... output elided ... test_ctor (slither.tests.SnakeTests) ... ok test_division_by_zero (slither.tests.SnakeTests) ... ok Ran 2 tests in 0.009s OK (env1)$ popd

O bien, puedo ejecutar las mismas pruebas con nosetests :

(env1)$ pushd src (env1)$ nosetests slither/ .. Ran 2 tests in 0.007s OK (env1)$ popd

También tenga en cuenta que nosetests puede ser quisquilloso con los ejecutables. Puede pasar --exe si desea que descubra pruebas en módulos de Python que sean ejecutables.


Necesita tener una copia de la nariz instalada en el entorno virtual. Para forzar la instalación de nose en el virtualenv, aunque ya esté instalado en los paquetes de sitio globales, ejecute pip install con el -I :

(env1)$ pip install nose -I

A partir de ese momento, solo puedes ejecutar los nosetests como de costumbre.


Si todo lo demás falla, intente instalar la nariz en su venv, y / o ejecute nosetests-2.7 . Creo que la respuesta de @andrea-zonca tiene el mismo efecto si tu venv python es 2.7


Tal vez este es un cambio reciente, pero para mí, cuando instalé nosetests a través de pip, había un ejecutable nosetests instalado en .virtualenvs/<env>/bin , que (como era de esperar) funciona correctamente con el virtualenv.


Tengo un problema similar. La siguiente solución ayudó:

python `which nosetests`

(en lugar de simplemente nosestests )