2011-10-11 16 views
5

Soy nuevo tanto en Django como en las pruebas unitarias, pero como estoy empezando un proyecto después de una buena cantidad de tiempo jugando con el framework, decidí probar un poco las pruebas unitarias.¿Cómo iniciar TDD en Django?

Dejando a un lado mi entusiasmo, estoy bastante perdido en cuanto a cómo planear el proceso de desarrollo. Hice una pequeña búsqueda en github para proyectos de Django que usan pruebas unitarias y tropecé con this. Veo que solo hay pruebas en la aplicación de "etiquetado", y se ve bien, pero no tengo idea de cómo descomponerlo. ¿Por qué el archivo "models.py" en las aplicaciones/etiquetado/pruebas /? Las clases de modelo allí no tienen nada que ver con las de apps/tagging/models.py ...

¿Alguna idea sobre cómo resolver esto o encontrar un buen ejemplo sobre cómo implementar pruebas unitarias en un entorno django?

Además, leí en los documentos que Django introdujo unittest2 en 1.3 así que "Django 1.1 Testing And Debugging - por Karen M. Tracey" sería una lectura útil o ¿cree que podría causar cierta confusión?

De todos modos, agradezco cualquier entrada con antelación.

Respuesta

5

Si puedo conectar mi propio tutorial, se explica cómo hacer TDD en Django desde cero. Cubro los mismos pasos que el tutorial "oficial" de Django, excepto el uso de TDD en cada paso del camino. Eso incluye pruebas completas de automatización del navegador con Selenium (que le permite probar el comportamiento desde el punto de vista del usuario final, incluida la posibilidad de incluir javascript más adelante). También muestro cómo utilizar el Django TestClient para las pruebas unitarias ...

http://tdd-django-tutorial.com

+0

Creo que me encontré con este proyecto (la aplicación django poll + todas las pruebas) en github sme tiempo atrás. No sabía que había un paso por paso también ... Gracias amigo. Ha pasado un tiempo, pero lo echaré un vistazo. –

+0

¡mira cómo te va! Intenté escribirlo, así que no asume ningún conocimiento, y realmente va paso a paso ... ¡Comentarios muy apreciados! – hwjp

+0

Lo estoy leyendo ahora mismo ... ni siquiera sabía que las pruebas funcionales podían ser automatizadas. Había oído hablar de Selenium pero nunca leí de qué se trataba la pelusa. Se ve muy bien hasta ahora. Sin embargo, tengo una pregunta ... ¿con qué frecuencia comprometes tu código mientras pruebas la unidad? Estoy repasando el bit de creación del modelo Poll, ... y parecería un poco exagerado si tuviera que escribir la prueba, ejecutarla, agregar un campo, confirmar, ejecutar la prueba, agregar otro campo, confirmar , ejecutar la prueba, etc ... ¿cuál es el ritmo para confirmar los cambios de código? –

2

Django hace un gran trabajo para comenzar. Esbozan lo que debe y no debe probarse, y cómo usar algunas de sus clases de prueba integradas. https://docs.djangoproject.com/en/dev/topics/testing/

Además, recomendaría django-nose test runner. Tiene muchos complementos geniales.

Creo que la convención general es tener un archivo tests.py en cada aplicación.

Personalmente, escribiré al menos 1 prueba para cada función que creo. Más dependiendo de cuán complicada es la lógica. A medida que la aplicación se desarrolla, estas pruebas se convierten en pruebas de regresión para mi proyecto.

+0

¿Tiene o conoce de alguna buena proyectos de ejemplo para que pudiera comprobar las pruebas para las diferentes partes de la aplicación (formularios, vistas, URLs , modelos, sesiones, etc.)? Eso sería realmente útil. Además, ¿cuál es el punto de django-nose? ¿Qué tipo de complementos utilizas con él? –