2011-06-14 8 views
8

Estoy trabajando en un proyecto de Django que, por diseño, es bastante pesado en javascript. Para el código del servidor, tratamos de tener una cobertura de prueba decente mediante el uso de pruebas unitarias, y en un nivel ligeramente más alto tenemos pruebas que utilizan el cliente de pruebas Django. Tenemos un servidor de Hudson/Jenkins en ejecución para CI, con cosas configuradas más o menos en la línea de this article, que nos da un pase de prueba y estadísticas de cobertura.Pruebas de Javascript dentro del proyecto django, con CI y cobertura

Me gustaría tener algo similar para nuestro javascript también. Me gustaría poder probar en el nivel de prueba unitaria, pero también en el nivel de prueba de integración/aceptación. Esto último requeriría un entorno DOM JS completo y un servidor django en ejecución. Lo ideal sería usar de alguna manera el cliente de prueba de Django para poder configurar el estado del servidor de la manera que estoy acostumbrado para las pruebas de Django. También me gustaría ejecutar todas las pruebas desde el servidor de CI, lo que requeriría algún tipo de entorno de navegador sin cabeza (el servidor es Ubuntu sin un entorno de escritorio).

He encontrado un montón de cosas, pero parece que no se puede ejecutar en el servidor de CI. Además, la integración con Django a menudo no es buena, y no hace un buen aislamiento de prueba para el entorno del servidor. Finalmente, idealmente me gustaría algo que funcione a un ritmo bastante bueno, para mantener mi ciclo de prueba/código lo más rápido posible.

¿Hay marcos que hacen lo que quiero o alguien ha logrado resolver una solución que se acerca? ¿Y existen buenas prácticas establecidas en general para hacer buenas pruebas de JavaScript en combinación con Django (es decir, ¿hay algún enfoque recomendado de la gente de django que me falta)?

+0

"Cobble together" es lo correcto para mí. He usado jruby's celerity y zombie.js para hacer lo que me pides, pero nunca encontré las soluciones muy satisfactorias. Siempre había algo específico para el navegador que debía ser probado manualmente. –

+0

misma pregunta aquí. Voy a ver las cosas de javascript en [django-jenkins] (https://github.com/kmmbvnr/django-jenkins) para ver si eso puede hacer parte de eso. – marc1s

Respuesta

1

HtmlUNIT parece que podría hacer algo de lo que necesita (es decir, un navegador sin cabeza que admita JavaScript). Tampoco debería ser difícil de equipar con un comando de administración de estilo 'runserver' que también abandona la cobertura al salir.

http://htmlunit.sourceforge.net/

+0

+1 para la dirección, pero el contenido de su rastreador de errores es un poco aterrador: http://sourceforge.net/tracker/?group_id=47038&atid=448266 –

0

Es posible que desee probar una aplicación Python Ghost.py de Phantom.JS. Proporciono una extensión para django basada en el próximo LiveServerTestCase.

Se basa en PyQt4, por lo que deberá copiarlo en la página virtual de su proyecto.

Cuestiones relacionadas