0Pricing
Terraform Infrastructure as Code · Lección

Pruebas unitarias con Terratest

Aprenda a escribir pruebas unitarias para sus módulos de Terraform mediante Terratest, una biblioteca de Go para probar código de infraestructura.

Pruebas unitarias con Terratest es una lección gratuita de Terraform Infrastructure as Code en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Terraform Infrastructure as Code, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Terraform Infrastructure as Code incluye 4 lecciones en total.

¿Por qué probar su IaC?

La infraestructura como código (IaC) permite gestionar la infraestructura como si fuera software. Al igual que el software, las configuraciones de IaC pueden contener errores.

  • Fiabilidad: Detecte los errores antes de la implementación.
  • Coherencia: Asegúrese de que los recursos se aprovisionen según lo previsto.
  • Confianza: Realice cambios con menos temor a afectar a la infraestructura existente.

Probar su código de Terraform es fundamental para crear entornos en la nube sólidos y fáciles de mantener.

Pruebas unitarias frente a pruebas de integración

Al probar IaC, normalmente hablamos de dos tipos principales:

  • Pruebas unitarias: Se centran en partes pequeñas y aisladas del código, como un único módulo de Terraform. Garantizan que los componentes individuales funcionen correctamente de forma aislada.
  • Pruebas de integración: Verifican que varios componentes o módulos funcionen conjuntamente como un sistema, normalmente implementando recursos reales en un entorno de nube.

En esta lección, nos centraremos en las pruebas unitarias de sus módulos de Terraform.

Introducción a Terratest

Terratest es una biblioteca de Go desarrollada por HashiCorp (los creadores de Terraform), diseñada específicamente para probar código de infraestructura.

  • Le ayuda a escribir pruebas automatizadas para su código de Terraform, Packer, Kubernetes y otras herramientas de IaC.
  • Terratest puede implementar infraestructura real en su proveedor de servicios en la nube, ejecutar aserciones sobre ella y, después, eliminarla.
  • Es una herramienta potente tanto para las pruebas unitarias como para las de integración.

Requisitos previos de Terratest

Para comenzar a utilizar Terratest, necesitará algunas cosas:

  • Go: Terratest es una biblioteca de Go, por lo que deberá tener Go instalado (se recomienda la versión 1.13 o posterior).
  • Terraform CLI: La interfaz de línea de comandos de Terraform debe estar instalada y disponible.
  • Credenciales del proveedor de nube: Si va a implementar recursos reales (incluso en pruebas unitarias que interactúen con una API de nube), necesitará acceso autenticado al proveedor de nube (por ejemplo, la CLI de AWS configurada).

También necesitará conocimientos básicos de los conceptos de programación en Go.

Estructura de los archivos de prueba de Go

Las pruebas de Terratest se escriben en Go y siguen las convenciones de prueba estándar de Go:

  • Los archivos de prueba terminan en _test.go (por ejemplo, main_test.go).
  • Las funciones de prueba comienzan por Test (por ejemplo, TestMyModule(t *testing.T)).
  • Utilizan el paquete integrado testing de Go.

Normalmente, estos archivos se encuentran junto al módulo de Terraform o en un directorio test dedicado.

Explicación de `terraform.Options`

El componente central de una prueba de Terraform con Terratest es la estructura terraform.Options. Este objeto indica a Terratest cómo ejecutar Terraform.

Entre sus campos principales se incluyen:

  • TerraformDir: Ruta al módulo de Terraform.
  • Vars: Variables de entrada del módulo de Terraform.
  • EnvVars: Variables de entorno que se establecerán para el proceso de Terraform.
  • BackendConfig: Configuración del backend de Terraform.

Es el esquema que utilizará para ejecutar comandos de Terraform dentro de la prueba.

Flujo de trabajo de una prueba básica

Una prueba unitaria típica de Terraform con Terratest sigue estos pasos:

  1. Definir las opciones: Cree una estructura terraform.Options que apunte a su módulo y establezca las variables.
  2. Implementar: Utilice terraform.InitAndApply(t, options) para inicializar y aplicar su configuración.
  3. Programar la destrucción: Añada inmediatamente defer terraform.Destroy(t, options) para garantizar la limpieza cuando termine la prueba.
  4. Comprobar: Utilice testify/assert de Go o terraform.Output de Terratest para comprobar las propiedades o salidas de los recursos.

Esto garantiza un entorno de prueba limpio y aislado.

Programar `terraform.Options`

A continuación se muestra un programa sencillo en Go que demuestra cómo configurar terraform.Options. Este es un paso fundamental para cualquier interacción con Terratest.

package main

import (
	"fmt"
	"path/filepath"
	"github.com/gruntwork-io/terratest/modules/terraform"
)

func main() {
	// Define the path to your Terraform configuration directory.
	// In a real test, this would point to your module under test.
	terraformConfigDir := filepath.Join(".", "my-example-module")

	// Create a terraform.Options object.
	// This struct holds all the configuration for running Terraform via Terratest.
	options := &terraform.Options{
		TerraformDir: terraformConfigDir,
		// You would add input variables here, e.g.:
		// Vars: map[string]interface{}{"instance_type": "t2.micro"},
		// And environment variables, e.g.:
		// EnvVars: map[string]string{"AWS_REGION": "us-east-1"},
	}

	fmt.Println("--- Terratest Options Configuration Demo ---")
	fmt.Printf("Configured Terraform Directory: %s\n", options.TerraformDir)
	fmt.Println("This shows how to initialize Terratest options.")
	fmt.Println("Actual Terratest unit tests are run using 'go test' command.")
}

Comprobar las salidas

Después de aplicar su configuración de Terraform, querrá verificar sus salidas. Terratest proporciona funciones para recuperar estos valores fácilmente.

  • terraform.Output(t, options, "output_name"): Recupera una salida de cadena individual.
  • terraform.OutputMap(t, options, "output_name"): Recupera una salida de tipo mapa.
  • terraform.OutputList(t, options, "output_name"): Recupera una salida de tipo lista.

A continuación, utilizará las aserciones de prueba de Go (por ejemplo, las de github.com/stretchr/testify/assert) para comprobar si las salidas coinciden con lo esperado.

Compruebe sus conocimientos

Terratest le ayuda a probar su código de Terraform mediante la interacción con recursos de nube reales. ¿Cuál de las siguientes opciones NO es un paso habitual del flujo de trabajo de una prueba unitaria con Terratest?

Resumen y siguientes pasos

¡Ha aprendido los fundamentos de las pruebas unitarias de Terraform con Terratest!

  • Terratest es una biblioteca de Go para probar IaC.
  • Le permite implementar, comprobar y limpiar infraestructura de nube real.
  • Entre sus componentes clave se incluyen los archivos _test.go, func TestXxx(t *testing.T) y la estructura terraform.Options.
  • El flujo de trabajo consiste en definir las opciones, aplicar Terraform, realizar comprobaciones y garantizar la limpieza mediante defer.

A continuación, explore cómo escribir comprobaciones más complejas e integrar Terratest en sus pipelines de CI/CD para realizar pruebas automatizadas.

Preguntas frecuentes

¿La lección «Pruebas unitarias con Terratest» es gratis?

Sí — el texto completo de «Pruebas unitarias con Terratest» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Terraform Infrastructure as Code, actualiza a CoddyKit PRO. El curso de Terraform Infrastructure as Code incluye 4 lecciones en total.

¿Qué aprenderé en «Pruebas unitarias con Terratest»?

Aprenda a escribir pruebas unitarias para sus módulos de Terraform mediante Terratest, una biblioteca de Go para probar código de infraestructura. Practicas Terraform Infrastructure as Code con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Terraform Infrastructure as Code?

No se requiere experiencia previa. Terraform Infrastructure as Code en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Pruebas unitarias con Terratest»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Terraform Infrastructure as Code?

Sí. Cada lección de Terraform Infrastructure as Code incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. `validate` y `fmt` de Terraform
  2. Pruebas unitarias con Terratest
  3. Pruebas de integración de recursos en la nube
  4. Políticas como código y comprobaciones de cumplimiento
← Volver a Terraform Infrastructure as Code