Golang afirmar

Golang afirmar
Hay tres componentes principales en el ciclo de vida de un desarrollador: código de escritura, código de prueba, corregir el código, repetir. Aunque es una simplificación excesiva extrema, ilustra un concepto que se encuentran todos los desarrolladores.

En este artículo, nos centraremos en una entidad única del ciclo de vida de un desarrollador: pruebas. El código de prueba es una característica muy útil para cualquier desarrollador. Permite encontrar y solucionar errores antes de implementar el código para la producción. Aunque hay muchas formas y características para implementar pruebas de código, este artículo se centrará en el paquete GO Afirmar.

Comenzando con las pruebas

Antes de sumergirnos en cómo trabajar con el paquete Testify, aprendamos cómo comenzar con las pruebas de Go.

El primer paso es saber lo que quieres probar. Esta podría ser una función simple para una colección de métodos.

Tomemos un programa de ejemplo simple que solo multiplique su entrada por 10.

Comience creando un directorio para almacenar su código.

Prueba de MKIDR

Navegue al directorio y cree un archivo GO que contenga su programa. Para simplificar, llamaremos a este archivo principal.ir

prueba de CD
toque.ir

Edite el archivo con su editor de texto y cree su programa. Para seguir junto con este tutorial, puede agregar el código como se muestra a continuación:

paquete principal
importar (
"FMT"
)
FuncmultIly (x int) (resultado int)
resultado = x * 10
Resultado de retorno

funcmain ()
fmt.Println ("Comenzando con pruebas")

En el programa de ejemplo, tenemos una función que toma una entrada entera y devuelve el entero multiplicado por 10.

Guarde y cierre el archivo.

El siguiente paso es crear una prueba para el programa anterior. Para hacer esto, necesitamos crear un archivo en el mismo directorio con el sufijo _test. Esto le dice al módulo de prueba GO que este archivo contiene un conjunto de pruebas para el programa en el directorio.

Ya que queremos crear una prueba para el principal.Programa Go, llamaremos al archivo de prueba como:

toque main_test.ir

En el archivo de prueba, podemos crear instrucciones de prueba para nuestro programa.

Dado que queremos usar el paquete de afirmación de uso, necesitamos importar las pruebas y el paquete Afirmar.

Puede incluir las importaciones como:

paquete
importar (
"pruebas"
"Github.com/sprinr/testify/afirmar "
)

A continuación, cree una función de prueba para probar el programa principal. Podemos crear instrucciones de prueba como se muestra:

paquete principal
importar (
"pruebas"
"Github.com/sprinr/testify/afirmar "
)
FunctestMultiply (T *pruebas.T)
afirmar.Igual (t, multiplicar (10), 100)

En el programa anterior, creamos una función de prueba que toma una prueba.T Objeto T. El marco de prueba permite que la función escriba falla en la ubicación apropiada siempre que este objeto.

Dentro de la función, usamos el paquete Afirmar para verificar si la función devuelve un resultado igual a los parámetros proporcionados. Si la función multiplicar toma el entero 10 y devuelve un valor igual a 100, entonces pasa la prueba.

Guarde el archivo de prueba y ejecute la prueba usando el comando:

prueba

El comando anterior debe tomar el archivo de prueba y ejecutar las pruebas configuradas.

Una salida de ejemplo es como se muestra:

=== Ejecutar testmultyly
--- Pase: TestMultyly (0.00s)
APROBAR
OK LINUXHINT/GO-ASSERT
> Prueba de ejecución terminada el 1/31/2022, 1:38:17 PM <

Como notará en la salida anterior, la función pasa la prueba.

Cambiemos el valor de la función para ilustrar una instrucción de falla. Por ejemplo, cambie el tercer parámetro de la función de prueba a un valor incorrecto. Por ejemplo:

FunctestMultiply (T *pruebas.T)
afirmar.Igual (t, multiplicar (10), 10)

En este ejemplo, estamos diciendo al programa que si la función no devuelve 10, entonces la función falla.

Nota: Tenga en cuenta que la función de prueba es incorrecta.

Si ejecutamos la prueba, deberíamos obtener un fracaso como:

=== Ejecutar testmultyly
afirmar \ main_test.Ir: 10:
Trace de error:
Error: no es igual:
esperado: 100
Real: 10
Prueba: TestMultyly
--- Fail: testMultyly (0.00s)
FALLAR
Fail Linuxhint/Go-Asert 0.040S
> Prueba de ejecución terminada al 1/31/2022, 1:40:59 PM <

La salida anterior ilustra una prueba fallida.

Golang afirmar

Ahora que tenemos los conceptos básicos de las pruebas fuera del camino, cambiemos nuestro enfoque al paquete Afirmar. En nuestro ejemplo anterior, utilizamos el método igual para verificar si la función devuelve el valor esperado. Sin embargo, el paquete ASSERT proporciona una gran cantidad de herramientas y métodos de prueba para facilitar la prueba de código.

Exploremos algunos ejemplos más para ilustrar la funcionalidad del paquete de afirmación.

Desigualdad de prueba de golang

Podemos usar el paquete de afirmación para verificar la desigualdad utilizando el método NoteQual (). La sintaxis de la función es como se muestra:

FUNC NoteQual (T Testingt, esperado, interfaz real , msgandargs ... interfaz ) bool

La función toma una t.Objeto de prueba, el valor esperado y el valor real y un mensaje de impresión. Verifica si el valor esperado y real no es igual. Si es cierto, la prueba pasa, de lo contrario, falla.

Un ejemplo es como se muestra:

FunctestNotequal (T *pruebas.T)
afirmar.Notequal (t, 100, 10, "los valores no deben ser iguales")

El código anterior verifica si los valores no son iguales. Una salida de ejemplo es como se muestra:

=== Ejecutar testNotequal
--- Pase: TestNotequal (0.00s)
APROBAR
OK LINUXHINT/GO-ASSERT 0.037S

Código de estado HTTP de prueba de Golang

Podemos usar el método httpstatuscode () para verificar si un controlador devuelve el código de estado especificado.

Supongamos que tenemos un servidor HTTP, que si hacemos una solicitud para devolver el código de estado de 200. No nos sumergiremos en cómo crear un servidor HTTP en GO. Consulte nuestro tutorial sobre el tema para obtener más información.

Un ejemplo de servidor HTTP es como se muestra:

paquete principal
importar (
"IO"
"net/http"
)
var mux map [cadena] func (http.ResponseWriter, *http.Pedido)
funcmain ()
servidor: = http.Servidor
Addr: ": 8080",
Handler: & MyHandler ,

mux = make (map [string] func (http.ResponseWriter, *http.Pedido))
mux ["/"] = sayhello
servidor.ListenandServe ()

typemyhandlerTruct
func (*myhandler) servhttp (w http.Responsewriter, r *http.Pedido)
Si h, ok: = mux [r.Url.Cadena()]; OK
H (W, R)
devolver

IO.WriteString (W, "Servidor en ejecución:"+R.Url.Cadena())

Funcsayhello (w http.Responsewriter, r *http.Pedido)
IO.WriteString (W, "Hola!")

Podemos crear una prueba para verificar si la función del controlador HTTP devuelve el código de estado especificado. En nuestro caso, la función del controlador HTTP es el método Sayhello. La función de prueba es como se muestra:

FUNC TestStatuscode (prueba T *.T)
afirmar.Httpstatuscode (t, sayhello, "get", "/", nil, 200)

En el ejemplo anterior, creamos una función de prueba para verificar el envío de una solicitud GET al servidor con la función del controlador HTTP Sayhello, devuelve el código de estado de 200.

El código devuelve:

=== Ejecutar testStatuscode
--- Pase: TestStatuscode (0.00s)
APROBAR
OK LINUXHINT/GO-ASSERT 0.034S
> Prueba de ejecución terminada el 1/31/2022, 2:44:39 pm <

Panic de prueba de Golang

Otra prueba que podemos ejecutar es verificar si una función específica se asigna a. Podemos usar el afirmación.Método de pánico () como se muestra:

FunctestPanic (T *Prueba.T)
afirmar.Panics (t, func ()
Panic ("Definitivamente pánico!")
, "Debería entrar en pánico")

En el ejemplo anterior, verificamos si la función si se enpone.

Golang verifique si existe el directorio

Si desea probar si existe un directorio específico dentro de una ruta especificada, puede usar el método Direxists ().

Por ejemplo:

Functestdir (T *Prueba.T)
afirmar.Direxists (T, "... /Afirmar")

Conclusión

Esta fue una guía completa sobre cómo comenzar con las pruebas en el lenguaje de programación GO. Las pruebas se usan en gran medida en proyectos de desarrolladores múltiples. Por lo tanto, aprender a realizar pruebas es excepcional.

El paquete Afirmar que se muestra en este tutorial proporciona mucho más que se muestran en este tutorial. La documentación se expande en esto.

https: // pkg.ir.dev/github.com/stretro/testify/afirmar