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
)