2011-06-13 7 views
19

Necesito poder ejecutar todas las pruebas en el directorio actual escribiendo una línea en el shell de Linux. En algunos directorios, esto funciona bien. Pero en otros, cuando escribo "nosetests" no se ejecutan pruebas. Las pruebas se ejecutarán si las llamo individualmente pero necesito que todas se ejecuten automáticamente. Aquí está uno de los directorios que no funcionan:Ejecutar todas las pruebas en el directorio usando la nariz

/extwebserver 
    __init__.py 
    test_Detection.py 
    test_Filesystem.py 
    test_Hardware.py 
    ... 

Cuando corro "nosetests" en el directorio padre, todas las pruebas en un determinado subdirectorio se marcha, pero las pruebas de/extwebserver u otros subdirectorios o el padre el directorio mismo se ejecuta.

EDITAR Aquí está la salida:

[email protected]:~/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing$ nosetests -vv --collect-only 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/baseTestCase.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/extwebserver/run.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/extwebserver/test_Detection.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/extwebserver/test_Filesystem.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/extwebserver/test_Hardware.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/extwebserver/test_Mode.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/extwebserver/test_System.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/extwebserver/test_View.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/extwebserver/test_Webserver.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/mocks/bottle.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/utils/test_timestamps.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/testCamera.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/testCameraManager.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/testMainControllerServer.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/testMode.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/testPASEServerClient.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/testView.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/testViewsManager.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/test_commission/test_FSM.py is executable; skipped 
nose.selector: INFO: /home/matthew/Documents/ParkAssist/m3/linux/appfs/master/usr/bin/piopio/testing/test_commission/test_Webserver.py is executable; skipped 
test_add (testing.utils.test_config.test_config) ... ok 
test_add_set (testing.utils.test_config.test_config) ... ok 
test_load (testing.utils.test_config.test_config) ... ok 
test_load_valid (testing.utils.test_config.test_config) ... ok 
test_modify_set (testing.utils.test_config.test_config) ... ok 
test_save (testing.utils.test_config.test_config) ... ok 
test_update (testing.utils.test_config.test_config) ... ok 
test_get_full_version (testing.utils.test_controller.test_controller) ... ok 
test_get_hwaddr (testing.utils.test_controller.test_controller) ... ok 
test_get_ip (testing.utils.test_controller.test_controller) ... ok 
test_get_netmask (testing.utils.test_controller.test_controller) ... ok 
test_get_version (testing.utils.test_controller.test_controller) ... ok 
test_FloatEncoder (testing.utils.test_fileio.test_fileio) ... ok 
test_read_file (testing.utils.test_fileio.test_fileio) ... ok 
test_read_json_string (testing.utils.test_fileio.test_fileio) ... ok 
test_system_to_text (testing.utils.test_fileio.test_fileio) ... ok 
test_write_file (testing.utils.test_fileio.test_fileio) ... ok 
test_get_hwaddr (testing.utils.test_netdev.test_netdev) ... ok 
test_get_ip (testing.utils.test_netdev.test_netdev) ... ok 
test_get_netmask (testing.utils.test_netdev.test_netdev) ... ok 
test_set_datetime (testing.utils.test_syncdatetime.test_syncdatetime) ... ok 
test_cast (testing.utils.test_tools.test_tools) ... ok 
test_get_image (testing.testdetection.test_CameraGuardian.test_CameraGuardian) ... ok 

---------------------------------------------------------------------- 
Ran 23 tests in 0.003s 
+0

@Matt: ¿Puedes proporcionar la salida de 'nosetests -vv --collect-only' para que podamos ver una salida detallada del algoritmo de descubrimiento de prueba de nose? –

+0

Tengo un problema similar y me saltean, porque la prueba es ejecutable ...? – user2921139

Respuesta

45

De Python Testing: Beginner's Guide por Daniel Arbuckle:

nariz se ve para las pruebas en directorios y módulos cuyos nombres comienzan con test y Test o contener una '_', '.', o '- 'seguido de test o Test. Ese es el valor predeterminado, pero en realidad no es toda la historia.

An Extended Introduction to the nose Unit Testing Framework muestra que se puede ver una salida detallada del algoritmo de descubrimiento de prueba de la nariz mediante la ejecución:

nosetests -vv --collect-only 

cuando me encontré con lo anterior en un directorio, he notado que la nariz omite los archivos ejecutables. Si ese es su problema, deberá cambiar el modo de archivo a no ejecutable. En Mac OS X o Linux, esto se puede lograr con:

chmod 644 file.py 

o similar.

Si usted sabe que sus módulos/archivos son de importación y segura, a continuación, puede ejecutar la nariz con la opción --exe a "buscar pruebas en módulos de Python que sean ejecutables" (de `nosetests hombre):

nosetests --exe 
+0

Traté de cambiar el nombre de los directorios, pero todavía no está recopilando pruebas de ellos. Probé la prueba de forma * y prueba_ * y ninguno funcionó. También lo ejecuté con --collect-only y enumeré los archivos del subdirectorio que eran ejecutables y, por lo tanto, omitidos. Pero eliminé la ruta a python.exe y los archivos todavía se muestran como ejecutables. – Matt

+0

Intente cambiar el modo de archivo a no ejecutable para los archivos que se omitió Nariz. –

+1

El truco de chmod funcionó.Ahora está recopilando todas las pruebas del directorio de trabajo y de todos los subdirectorios. ¡Gracias por la ayuda! – Matt

11

Puede usar --exe en la línea de comandos para forzar a nose a considerar los archivos ejecutables como pruebas válidas. Si se cansa de escritura --exe cada vez, se puede poner la línea:

exe ​​= True

en un .noserc (para UNIX/Linux) o el archivo de nose.cfg (para Windows) a tu directorio personal.

Cuestiones relacionadas