Existen dos tipos de funciones de Cloud Functions: funciones de HTTP y funciones en segundo plano. Cada tipo tiene sus propios requisitos de prueba.
La estructura de prueba de una función depende de qué recursos de Google Cloud Platform use esa función. A su vez, el uso de los recursos de una función depende de cómo se active esa función.
En este documento, se describe cómo probar Cloud Functions en segundo plano. Consulta Prueba las funciones de HTTP para obtener información sobre cómo evaluar las funciones de HTTP.
Funciones activadas por Pub/Sub
Las pruebas de funciones activadas por Pub/Sub se organizan de manera diferente según dónde se ejecuta la función probada.
A continuación, se muestra un ejemplo de una función activada por Pub/Sub que imprime “Hello, World”:
Node.js 8/10
Python
Go
Pruebas de unidades
Estas son las pruebas de unidades para la función activada por Pub/Sub mencionada anteriormente:
Node.js 8/10
Python
Go
Ejecuta las pruebas de unidades con el siguiente comando:
Node.js
mocha test/sample.unit.pubsub.test.js --exit
Python
pytest sample_pubsub_test.py
Go
go test -v ./hello_pubsub_test.go
Pruebas de integración
Estas son las pruebas de integración para la función activada por Pub/Sub mencionada anteriormente:
Node.js
A fin de ejecutar las pruebas de integración para esta función, completa los siguientes pasos:
Node.js
Ejecuta la prueba con el siguiente comando:
mocha test/sample.integration.pubsub.test.js --exit
Pruebas del sistema
Estas son las pruebas del sistema para esta función:
Node.js
Python
Go
Para ejecutar las pruebas del sistema, sigue estas instrucciones:
En tu proyecto de GCP, selecciona un tema de Cloud Pub/Sub al cual suscribir la función. Si proporcionas el nombre de un tema de Cloud Pub/Sub que no existe, este se crea automáticamente.
A continuación, implementa tus funciones con el siguiente comando:
Node.js 8
gcloud functions deploy helloPubSub --runtime nodejs8 --trigger-topic YOUR_PUBSUB_TOPIC
Node.js 10 (Beta)
gcloud functions deploy helloPubSub --runtime nodejs10 --trigger-topic YOUR_PUBSUB_TOPIC
Python
gcloud functions deploy hello_pubsub --runtime python37 --trigger-topic YOUR_PUBSUB_TOPIC
Go
gcloud functions deploy HelloPubSub --runtime go111 --trigger-topic YOUR_PUBSUB_TOPIC
en el que
YOUR_PUBSUB_TOPIC
es el nombre del tema de Cloud Pub/Sub al que quieres que se suscriban tus funciones.Ejecuta las pruebas del sistema con el siguiente comando:
Node.js
export FUNCTIONS_TOPIC=YOUR_PUBSUB_TOPIC mocha test/sample.system.pubsub.test.js --exit
Python
export FUNCTIONS_TOPIC=YOUR_PUBSUB_TOPIC pytest sample_pubsub_test_system.py
Go
export FUNCTIONS_TOPIC=YOUR_PUBSUB_TOPIC go test -v ./hello_pubsub_system_test.go
en el que
YOUR_PUBSUB_TOPIC
es el nombre del tema de Cloud Pub/Sub al que quieres que se suscriban tus funciones.
Funciones activadas por Storage
Las pruebas para las funciones activadas por Storage poseen una estructura similar a la de sus contrapartes activadas por Cloud Pub/Sub. Al igual que las pruebas de las funciones activadas por Cloud Pub/Sub, las pruebas de las funciones activadas por Storage se organizan de forma diferente según el lugar donde se aloja la función que se prueba.
Aquí te mostramos un ejemplo de una función activada por Storage:
Node.js 8/10
Python
Go
Pruebas de unidades
Estas son las pruebas de unidades para la función activada por Storage mencionada anteriormente:
Node.js 8/10
Python
Go
Ejecuta las pruebas de unidades con el siguiente comando:
Node.js
mocha test/sample.unit.storage.test.js --exit
Python
pytest sample_storage_test.py
Go
go test -v ./hello_cloud_storage_test.go
Pruebas de integración
Estas son las pruebas de integración para la función activada por Storage mencionada anteriormente:
Node.js
Ejecuta las pruebas de integración con el siguiente comando:
Node.js
mocha test/sample.integration.storage.test.js --exit
Pruebas del sistema
Estas son las pruebas del sistema para la función activada por Storage mencionada anteriormente:
Node.js
Python
Go
Implementa la función con el siguiente comando:
Node.js 8
gcloud functions deploy helloGCS --runtime nodejs8 --trigger-bucket YOUR_GCS_BUCKET_NAME
Node.js 10 (Beta)
gcloud functions deploy helloGCS --runtime nodejs10 --trigger-bucket YOUR_GCS_BUCKET_NAME
Python
gcloud functions deploy hello_gcs --runtime python37 --trigger-bucket YOUR_GCS_BUCKET_NAME
Go
gcloud functions deploy HelloGCS --runtime go111 --trigger-bucket YOUR_GCS_BUCKET_NAME
en el que YOUR_GCS_BUCKET_NAME
es el depósito de Cloud Storage que quieres supervisar. Ten en cuenta que esto debe hacer referencia a un depósito que exista en el mismo proyecto de GCP en el que se implementa la función.
Ejecuta las pruebas del sistema con los siguientes comandos:
Node.js
export BUCKET_NAME=YOUR_GCS_BUCKET_NAME mocha test/sample.system.storage.test.js --exit
Python
export BUCKET_NAME=YOUR_GCS_BUCKET_NAME pytest sample_storage_test_system.py
Go
export BUCKET_NAME=YOUR_GCS_BUCKET_NAME go test -v ./hello_cloud_storage_system_test.go