with unittest unit tutorial test run example assert_equal testing pylons nose nosetests

testing - unittest - ¿Cómo ejecuto una prueba única con Nose in Pylons?



unit test en python (4)

Tengo una aplicación Pylons 1.0 con un montón de pruebas en el directorio de prueba / funcional. Estoy obteniendo resultados de pruebas extraños y solo quiero ejecutar una prueba única. La documentación de la nariz dice que debería poder pasar un nombre de prueba en la línea de comando pero obtengo ImportErrors sin importar lo que haga

Por ejemplo:

nosetests -x -s sometestname

Da:

Traceback (most recent call last): File "/home/ben/.virtualenvs/tsq/lib/python2.6/site-packages/nose-0.11.4-py2.6.egg/nose/loader.py", line 371, in loadTestsFromName module = resolve_name(addr.module) File "/home/ben/.virtualenvs/tsq/lib/python2.6/site-packages/nose-0.11.4-py2.6.egg/nose/util.py", line 334, in resolve_name module = __import__(''.''.join(parts_copy)) ImportError: No module named sometestname

Me sale el mismo error para

nosetests -x -s appname.tests.functional.testcontroller

¿Cual es la sintaxis correcta?


Escribí este pequeño guión, basado en las respuestas anteriores:

#!/usr/bin/env bash # # Usage: # # ./noseTest <filename> <method_name> # # e.g.: # # ./noseTest test/MainTest.py mergeAll # # It is assumed that the file and the test class have the _same name_ # (e.g. the test class `MainTest` is defined in the file `MainTest.py`). # If you don''t follow this convention, this script won''t work for you. # testFile="$1" testMethod="$2" testClass="$(basename "$testFile" .py)" nosetests "$testFile:$testClass.test_$testMethod"


Para mí, usando Nosetests 1.3.0 estas variantes están funcionando (pero asegúrese de tener __init__.py en su carpeta de pruebas):

nosetests [options] tests.ui_tests nosetests [options] tests/ui_tests.py nosetests [options] tests.ui_tests:TestUI.test_admin_page

Tenga en cuenta que solo dos puntos entre el nombre del módulo y el nombre de la clase.


Tengo que agregar la extensión de archivo ".py", es decir,

r''/path_to/my_file.py:'' + r''test_func_xy''

Tal vez esto se deba a que no tengo ninguna clase en el archivo. Sin el .py , la nariz se quejaba:

No se puede encontrar test_func_xy invocable en file / path_to / my_file: el archivo no es un módulo de python

Y esto aunque tengo un __init__.py en la carpeta /path_to/ .


nosetests appname.tests.functional.test_controller debería funcionar, donde el archivo se llama test_controller.py .

Para ejecutar una clase de prueba y un método específicos, use una ruta de acceso de la forma module.path:ClassNameInFile.method_name , es decir, con dos puntos que separan la ruta del módulo / archivo y los objetos dentro del archivo. module.path es la ruta relativa al archivo (por ejemplo, tests/my_tests.py:ClassNameInFile.method_name ).