Testify para Go: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es Testify y para qué sirve?

\n\n

Testify es una de las bibliotecas más populares para pruebas en el lenguaje Go. Amplía las capacidades del paquete estándar testing, proporcionando a los desarrolladores potentes utilidades para escribir pruebas limpias, legibles y mantenibles. Testify resuelve varios problemas clave que enfrentan los desarrolladores de Go:

\n\n
    \n
  • Simplificación de aserciones (assertions): En lugar de construcciones verbosas con if y t.Errorf, Testify ofrece métodos concisos como assert.Equal.
  • \n
  • Legibilidad de errores: Cuando una prueba falla, Testify muestra mensajes detallados que indican los valores esperados y reales.
  • \n
  • Creación de mocks: El soporte integrado para mocks permite aislar fácilmente el código bajo prueba de dependencias externas (bases de datos, clientes HTTP, sistemas de archivos).
  • \n
  • Agrupación de pruebas (suite): Permite agrupar pruebas en conjuntos lógicos con configuraciones compartidas (Setup/Teardown).
  • \n
\n\n

Testify es ideal para proyectos de cualquier tamaño, desde pequeñas utilidades hasta grandes arquitecturas de microservicios. Es el estándar de facto para pruebas en la comunidad Go.

\n\n

Instalación

\n\n

Testify se instala como una dependencia normal de Go. Asegúrate de tener Go instalado (versión 1.16 o superior) y un módulo inicializado (go mod init).

\n\n
go get github.com/stretchr/testify
\n\n

Después de ejecutar el comando, Testify se agregará a tu archivo go.mod. Ahora puedes importarlo en tus archivos de prueba.

\n\n

Inicio rápido

\n\n

Escribamos una prueba simple para una función que suma dos números. Creamos el archivo math.go:

\n\n
package main\n\nfunc Add(a, b int) int {\n    return a + b\n}
\n\n

Ahora creamos el archivo de prueba math_test.go:

\n\n
package main\n\nimport (\n    "testing"\n    "github.com/stretchr/testify/assert"\n)\n\nfunc TestAdd(t *testing.T) {\n    result := Add(2, 3)\n    expected := 5\n    assert.Equal(t, expected, result, "2 + 3 debería ser igual a 5")\n}
\n\n

Ejecuta la prueba:

\n\n
go test -v
\n\n

Verás un resultado verde. Si cambias el valor esperado a 6, la prueba fallará con un mensaje de error detallado.

\n\n

Métodos y funciones principales

\n\n

1. assert.Equal

\n

Descripción: Verifica que dos valores sean iguales. Usa reflect.DeepEqual para comparar tipos complejos (slices, estructuras, mapas).

\n

Parámetros:

\n
    \n
  • t — objeto *testing.T
  • \n
  • expected — valor esperado
  • \n
  • actual — valor real
  • \n
  • msg (opcional) — mensaje de error
  • \n
\n

Ejemplo:

\n
func TestEqual(t *testing.T) {\n    assert.Equal(t, 10, 5+5, "5+5 debería ser 10")\n    assert.Equal(t, []int{1, 2, 3}, []int{1, 2, 3})\n}
\n\n

2. assert.NotEqual

\n

Descripción: Lo opuesto de Equal. Verifica que dos valores NO sean iguales.

\n

Parámetros: Similares a Equal.

\n

Ejemplo:

\n
func TestNotEqual(t *testing.T) {\n    assert.NotEqual(t, 10, 5+4, "5+4 no es igual a 10")\n}
\n\n

3. assert.True / assert.False

\n

Descripción: Verifica que una expresión sea verdadera (True) o falsa (False).

\n

Parámetros:

\n
    \n
  • t — objeto *testing.T
  • \n
  • condition — expresión booleana
  • \n
  • msg (opcional) — mensaje de error
  • \n
\n

Ejemplo:

\n
func TestTrueFalse(t *testing.T) {\n    assert.True(t, 5 > 3, "5                    

Recommendations