Usar aserción en Go
Este tutorial demuestra el uso de assert en GoLang.
Usar afirmar
en GoLang
GoLang no proporciona ningún soporte integrado para afirmar
, pero podemos usar un paquete de terceros ampliamente utilizado afirmar
de la API de Testify. El paquete assert
se utiliza para probar el código de GoLang, al igual que el método assert
de otros idiomas.
El paquete assert
proporciona herramientas integrales para probar los sistemas Go. Proporciona muchos métodos para diferentes tipos de pruebas; puede encontrar la información sobre los métodos afirmar
aquí.
Antes de utilizar el paquete assert
, debemos descargarlo y cargarlo. Siga los pasos a continuación para obtener el paquete assert
:
-
Abra el símbolo del sistema como administrador.
-
Vaya al directorio de su proyecto Go.
-
Asegúrese de que no haya ningún archivo
go.mod
. Si el directorio contiene un archivogo.mod
, elimínelo y luego vaya al siguiente paso. -
Ahora inicialice un archivo
go.mod
para el paqueteassert
y ejecute el siguiente comando:go mod init github.com/stretchr/testify/assert
-
Ahora descargue e instale el paquete
assert
. Ejecute el siguiente comando:go get github.com/stretchr/testify/assert
-
El código anterior extraerá el paquete
assert
, pero también puede necesitar otras dependencias. Ejecute el siguiente comando para descargar todas las demás dependencias:go mod download
Una vez descargado e instalado el paquete, podemos ejecutar las pruebas. Probemos un ejemplo:
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAssert(t *testing.T) {
assert := assert.New(t)
var Demo1 string = "Hello, This is delftstack.com!"
var Demo2 string = "Hello, This is delftstack.com!"
assert.Equal(Demo1, Demo2, "Both strings should be equal")
}
El código anterior probará si las dos cadenas son iguales o no. Si las cadenas son iguales, se pasará la prueba; de lo contrario, fracasó.
Ver la salida:
=== RUN TestAssert
--- PASS: TestAssert (0.00s)
PASS
El resultado anterior muestra que se pasó la prueba. Pero, ¿y si la prueba falla?
Probemos un ejemplo en el que la prueba de aserción fallará:
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAssert(t *testing.T) {
assert := assert.New(t)
var Demo1 string = "Hello, This is delftstack.com!"
var Demo2 string = "Hello, This is delftstack"
assert.Equal(Demo1, Demo2, "Both strings should be equal")
}
Como podemos ver, ambas cadenas no son iguales ahora, por lo que la prueba debería fallar. Ver la salida:
RUN TestAssert
prog.go:15:
Error Trace: /prog.go:15
Error: Not equal:
expected: "Hello, This is delftstack.com!"
actual : "Hello, This is delftstack"
Diff:
--- Expected
+++ Actual
@@ -1 +1 @@
-Hello, This is delftstack.com!
+Hello, This is delftstack
Test: TestAssert
Messages: Both strings should be equal
--- FAIL: TestAssert (0.00s)
FAIL
Program exited.
Como podemos ver, la prueba falló ahora y el programa muestra la información completa sobre la prueba. Hay muchos métodos como equal
, que se pueden usar con assert
para ejecutar diferentes pruebas.
Probemos ejemplos para los métodos assert.Nil
y assert.NotNil
:
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAssert(t *testing.T) {
var demo = []string{
"delftstack.123@hotmail.com",
"Delftstack <demo@delftstack.com>",
"demo@delftstack.tv",
"demohotmail.com",
"demo@"}
// assert for nil
assert.Nil(t, demo)
}
El código anterior verificará el objeto de valor dado, si es nulo
. Ver la salida:
=== RUN TestAssert
prog.go:19:
Error Trace: /prog.go:19
Error: Expected nil, but got: []string{"delftstack.123@hotmail.com", "Delftstack <demo@delftstack.com>", "demo@delftstack.tv", "demohotmail.com", "demo@"}
Test: TestAssert
--- FAIL: TestAssert (0.00s)
FAIL
Program exited.
Similarmente,
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAssert(t *testing.T) {
var demo = []string{
"delftstack.123@hotmail.com",
"Delftstack <demo@delftstack.com>",
"demo@delftstack.tv",
"demohotmail.com",
"demo@"}
// assert for not nil
assert.NotNil(t, demo)
}
El código anterior probará el objeto o valor no nil
. Ver la salida:
=== RUN TestAssert
--- PASS: TestAssert (0.00s)
PASS
Program exited.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook