¿Estás cansado de cargar datos de prueba? Fixture al rescate

Note

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

Entre ayer y hoy me puse a ver cómo crear Unittests para el proyecto BusStopped que estoy haciendo bajo la plataforma GAE (Google App Engine) utilizando Python como lenguaje.

Estuve probando y viendo varias formas de hacerlo. Primero, empecé a hacerlo a lo macho sin ninguna librería de apoyo, importando el módulo unittest de python y corriendo el script a mano como dice su documentación.

Después instalé nosetest y tuve que toquetear un poco el sys.path para que me encuentre los módulos necesarios y me empecé a ensuciar un poco las manos hasta que lo saqué.

Igualmente había algo que no me gustaba, y era que la db que se usaba era la misma que la del servidor de desarrollo entonces ya no me gustaba mucho. De ahí me fui a probar gaeunit, que es una aplicación de GAE que te escanea el directorio test y te ejecuta todos los tests que hay ahí mostrándote los resultados en una página web. Además, también funciona en el servidor de producción.

El problema con el que me encontré con este es que no es muy configurable (tenés que modificar el código para cambiar el directorio a escanear) y que además no es compatible con TipFypor decirlo de alguna forma. Esto es porque las librerías externas que uso las meto en una carpeta llamada /lib dentro de la app de GAE y TipFy las levanta automáticamente.

Entonces, tuve que configurar el sys.path en el script de gaeunit.py para que lea esas librerías también. Pero, después de esto me dí cuenta que como gaeunitusa una DB independiente de la del servidor de desarrollo, de alguna forma tenía que cargar los datos y... Ahí otra vez empezó la complicación: GAE no tiene algo similar a los Fixture de Django :(

Buscando un poco en Google me encontré con Fixture que es un módulo de Python para cargar fixtures de diferentes formas en diferentes proyectos y lo mejor de todo es que tiene algo específico para Google App Engine.

Comentarios

Comments powered by Disqus