2012-04-28 13 views
6

Así que estoy experimentando con la introducción de las pruebas unitarias selenium en django 1.4 en un par de proyectos en los que estoy trabajando.Mejor práctica para organizar pruebas de selenio y pruebas unitarias

La forma estándar de ejecutar las pruebas de mi unidad es simplemente hacer ./manage.py test y utilizo django-ignoretests para excluir aplicaciones django específicas que no deseo probar (según sea necesario).

Sin embargo, hay una manera de configurar mi proyecto para que pueda decidir ejecutar sólo pruebas de selenio cuando quiero y tienen ./manage.py test sólo se ejecutan las pruebas de unidad estándar.

¿Cuáles son algunas de las mejores prácticas para segregar y organizar las pruebas de selenio y las pruebas de unidad estándar?

Respuesta

5

siempre se puede agrupar todas sus pruebas de selenio en un solo paquete myapp/selenium_tests/ (como se describe aquí https://stackoverflow.com/a/5160779/1138710 por ejemplo) y luego ejecutar manage.py test myapp.selenium_tests y de grupo el resto de pruebas bajo decir myapp/other_tests.

De lo contrario, supongo que se podría escribir un corredor de prueba que comprueba para cada clase de prueba si se deriva de LiveServerTestCase (ver los documentos: https://docs.djangoproject.com/en/dev/topics/testing/#defining-a-test-runner)

+0

Como las pruebas de Selenium suelen ser funcionales, trato de hacer lo mismo, manteniéndolas en un paquete separado, junto con la opción de omitirlas (http://stackoverflow.com/a/10743466/4281). Me gusta la idea del corrector de prueba, pero en algunos casos las pruebas pueden no ser un descendiente de LiveServerTestCase (que es otro problema). –

5

Para las clases de prueba en cuestión, añadí la siguiente decorador:

from django.conf import settings 
@unittest.skipIf(getattr(settings,'SKIP_SELENIUM_TESTS', False), "Skipping Selenium tests") 

Entonces saltarse esas pruebas se suman al archivo de configuración: SKIP_SELENIUM_TESTS = True

Esto podría ser fácilmente envuelto en una subclase de LiveServerTestCase o un decorador sencilla . Si tuviera eso en más de un lugar, ya lo estaría.