Las pruebas unitarias locales se ejecutan en tu entorno sin acceder a componentes remotos. App Engine proporciona utilidades de prueba que usan implementaciones locales de Cloud Datastore y otros servicios de App Engine.
Los servicios de desarrollo simulan el comportamiento del servicio real de forma local para realizar pruebas. Por ejemplo, el uso de Datastore que se muestra en Escribir pruebas de Cloud Datastore y Memcache te permite probar tu código de Datastore sin enviar ninguna solicitud al Datastore real. Cualquier entidad almacenada durante una prueba unitaria del almacén de datos se almacena de forma local y se elimina después de la prueba. Puedes realizar pruebas pequeñas y rápidas sin depender del propio almacén de datos.
En este documento se describe cómo escribir pruebas unitarias en servicios locales de App Engine con el paquete de pruebas de Go.
El paquete de pruebas de Go
Puedes automatizar la descarga, la compilación y la prueba de paquetes de Go con la herramienta goapp
. goapp
forma parte del SDK de App Engine para Go.
La combinación del comando goapp test
y el paquete estándar Go
testing
se puede usar para ejecutar pruebas unitarias en el código de tu aplicación.
Para obtener información general sobre las pruebas con Go, consulta la sección Pruebas del artículo Cómo escribir código de Go y la referencia del paquete de pruebas.
Las pruebas unitarias se encuentran en archivos que terminan con el sufijo _test.go
. Por ejemplo, supongamos que quieres probar una función llamada composeNewsletter
que devuelve un *mail.Message
. El siguiente archivo newsletter_test.go
muestra una prueba sencilla de esa función:
Esta prueba se invocaría con el comando goapp test
desde el directorio del paquete:
goapp test
La herramienta goapp
se encuentra en el directorio raíz del SDK de App Engine. Te recomendamos que incluyas este directorio en la variable PATH
de tu sistema para que sea más fácil ejecutar pruebas.
Paquete aetest
Muchas llamadas a funciones de servicios de App Engine requieren un context.Context
como argumento. El paquete appengine/aetest
proporcionado con el SDK te permite crear un context.Context
falso para ejecutar tus pruebas con los servicios proporcionados en el entorno de desarrollo.
La llamada a aetest.NewContext
iniciará dev_appserver.py
en un subproceso,
que se usará para atender las llamadas a la API durante la prueba. Este subproceso se cerrará con la llamada a done
.
Si quieres tener más control sobre la instancia subyacente, puedes usar aetest.NewInstance
en su lugar. De esta forma, puedes crear varios contextos y asociarlos a objetos http.Request
.
Consulta la referencia del paquete aetest para obtener más información.
Escribir pruebas de Cloud Datastore y memcache
Probar el código que usa el almacén de datos o la caché en memoria es sencillo una vez que creas un context.Context
con el paquete aetest
: en tu llamada de prueba, aetest.NewContext
para crear un contexto que se pasará a la función que se está probando.
La aplicación de demostración transaction
del SDK incluye un ejemplo de cómo estructurar el código para permitir que se pueda probar y cómo probar el código que usa el almacén de datos:
Esta prueba se puede ejecutar con el comando goapp test
:
goapp test ./demos/transaction
Las pruebas de memcache siguen el mismo patrón: configura el estado inicial de memcache en tu prueba, ejecuta la función que se está probando y comprueba que la función ha consultado o modificado memcache de la forma esperada.