2011-11-07 7 views
9

que tienen la siguiente estructura de archivos de proyecto típico pitóncómo organizar y unittests de ejecución y pruebas funcionales utilizando separado nosetests

packageA 
    +----subpackage1 
      +----classa.py 
    +----subpackage2 
      +----classb.py 
    +----test 
      +----subpackage1 
        +----classa_test.py 
      +----subpackage2 
        +----classb_test.py 

Actualmente estoy tratando de organizar mis unittests y pruebas funcionales para que pueda funcionar unittests y pruebas funcionales usando la nariz por separado, pero también tienen la opción de ejecutar todas las pruebas. Las pruebas vivirían en packageA/test/subpackage1 y packageA/test/subpackage2.

  • ¿Cuál es una buena manera de organizar las diferentes pruebas? Por carpeta (funcional/vs unidad /)? Al nombrar la convención de la clase de prueba (ClassATest vs ClassAFunctionalTest)? o al nombrar la convención de los métodos de prueba (classa_foo_test vs classa_bar_functional_test)?
  • ¿Puede alguien explicar cómo funciona la comparación de expresiones regetas de nosetests? Las opciones -m, -i y -e no parecen ejecutarse como espero ejecutar. ¿La expresión regular combina directorios (subpackage1), archivos (classa_test) o clases de prueba (ClassATest) o métodos de prueba (classa_foo_test)? Estoy extremadamente confundido

Respuesta

7

Mi estructura de directorios pruebas se ve de esta manera:

root 
    + --- tests 
    |  + --- unit_tests 
    |  |   + --- some_app_tests 
    |  |   + --- another_app_tests 
    |  |   | run_tests.py 
    |  | 
    |  + --- integrate_tests 
    |     + --- some_app_tests 
    |     + --- another_app_tests 
    |     | run_tests.py 
    |  
    + --- project_root 
      + --- some_app 
      + --- another_app 

Para cada aplicación individuales que crean coresponding directorio con las pruebas en el directorio unidad- y integrate-. Cada uno de los directorios es un proyecto separado de django con configuraciones personalizadas y hay un comando de administración utilizado para ejecutar las pruebas.

Además, colocar las pruebas en un directorio tiene una buena ventaja: cuando se implementa el proyecto, no hay ninguna razón para implementar pruebas con él. Así que solo saqué un directorio y eso es todo.

(para ejecutar las pruebas que utilizo django-sane-prueba: https://github.com/Almad/django-sane-testing)

+0

Usted dice "Cada directorio es un proyecto django separado con configuraciones personalizadas y hay un comando de administración utilizado para ejecutar pruebas", pero su árbol no muestra esto. Además, ¿cuál es el comando de administración personalizado que está utilizando? – supervacuo

+0

@supervacuo No dije ** comando de gestión personalizado **, pero el comando de gestión con ** configuración personalizada **. Las pruebas son ejecutadas por django-sane-testing a través del comando 'manage.py test' (con algunas modificaciones en la configuración, incluidas en' run_tests.py', ver el documento de DST - http://django-sane-testing.readthedocs.org/ es/latest/usage.html # running-tests) – yedpodtrzitko

+0

OK, es suficiente. – supervacuo

-2

Intentaré organizar la prueba por área funcional. Realmente no sé qué nariz es.

Pero si, por ejemplo, prueba un área de inicio de sesión para una página web, cree una subcarpeta llamada "login" o "loginTests" y para la prueba del menú cree una carpeta "menu" o "menuTests". Siempre es bueno tener buenas convenciones de nomenclatura, así que nombre la prueba y las carpetas exactamente lo que están probando. Sea tan específico como pueda ser.

1

Si está desarrollando proyecto de Django, puede probar esta biblioteca: unclebob https://github.com/gabrielfalcao/unclebob

Se sugiere una manera de cómo organizar y ejecutar sus pruebas unitarias y pruebas funcionales.

+0

+1 No había visto 'unclebob' antes, pero parece una buena manera de alentar las buenas prácticas de prueba (me gusta particularmente" si solo ejecutas las pruebas unitarias, entonces no borrará NO va a configurar la base de datos de prueba ") , e incluso se actualizó bastante recientemente. – supervacuo

Cuestiones relacionadas