2012-09-16 8 views
10

He estado leyendo sobre pruebas en django. Una cosa que se recomendó fue el uso de django-webtest para pruebas funcionales. Encontré un artículo decente here que enseña cómo realizar pruebas funcionales en selenio usando Python. Pero las personas también han recomendado la extensión WebTest de Ian Bicking djagno-webtest para utilizarla para probar formularios en django. ¿En qué se diferencian las pruebas con webtest y las pruebas con selenio en el contexto de las formas de django?Diferencia entre django-webtest y selenio

Por lo tanto, desde el punto de vista de las pruebas funcionales:

¿Cómo django-webtest y selenio van de la mano?

¿Necesitamos tener los dos o cualquiera haría?

Respuesta

9

Lo importante que debe saber sobre Selenium es que está diseñado principalmente para ser un marco de prueba independiente del servidor. No importa qué marco o implementación del servidor se usa para crear el front-end mientras se comporte como se espera. Además, mientras usted puede (y cuando sea posible, probablemente debe) escribir pruebas manualmente en Selenium, muchas pruebas son macros grabadas de alguien que pasa por los movimientos que luego se convierten en código automáticamente.

Por otro lado, django-webtest está diseñado para funcionar específicamente en los sitios web de Django. En realidad, es una extensión específica de Django para WebTest, que no es solo de Django, sino de WSGI (y, por lo tanto, solo de Python). Por eso, puede interactuar con la aplicación con un mayor nivel de conocimiento de cómo funcionan las cosas en el servidor. Esto puede hacer que las pruebas de ejecución sean más rápidas y también facilita la escritura de pruebas más granulares y detalladas. Además, a diferencia de Selenium, sus pruebas no se pueden escribir automáticamente como macros grabadas.

De lo contrario, las dos herramientas tienen generalmente el mismo propósito y están destinadas a probar el mismo tipo de cosas. Dicho esto, sugiero elegir uno en lugar de usar ambos.

21

La diferencia clave es que selenium ejecuta un navegador real, mientras que WebTest se conecta al WSGI. Este resultados en las siguientes diferencias:

  • no se puede probar código JS con WebTest, ya que no hay nada para ejecutarlo.
  • WebTest es mucho más rápido, ya que se engancha a la WSGI, esto también significa un menor consumo de memoria
  • WebTest no requiere realmente ejecutar el servidor en un puerto así que es un poco más fácil de parallize
  • WebTest no comprueba diferentes problemas que se producen con los navegadores actuales, como los insectos específicos versión del navegador (Internet explorer tos .. .. .. tos)

en pocas palabras: prefieren utilizar WebTest, a menos que debe utilizar para las cosas que selenio no se puede probar con WebTest.