Usar aserción en Go

Sheeraz Gul 15 febrero 2024
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.

    Ir al directorio de proyectos

  • Asegúrese de que no haya ningún archivo go.mod. Si el directorio contiene un archivo go.mod, elimínelo y luego vaya al siguiente paso.
  • Ahora inicialice un archivo go.mod para el paquete assert y ejecute el siguiente comando:
    go mod init github.com/stretchr/testify/assert
    

    Ir a Mod Inicializar

  • Ahora descargue e instale el paquete assert. Ejecute el siguiente comando:
    go get github.com/stretchr/testify/assert
    

    Ir a obtener afirmación

  • 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 Gul avatar Sheeraz Gul avatar

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