Introducción a Bashunit: pruebas unitarias para tus scripts bash
Guía completa sobre cómo usar bashunit para escribir y ejecutar pruebas unitarias en tus scripts Bash
Introduccion a Bashunit pruebas unitarias para tus scripts bash
Por Ricardo García Dorta
¡Saludos a todos los aficionados al scripting! Ya saben que en Lean Mind nos
encanta tener nuestra base de código testeada como dios manda, por eso en el día
de hoy, vamos a sumergirnos en el mundo de las pruebas unitarias para scripts
Bash, utilizando una herramienta llamada bashunit. Si alguna vez has escrito
scripts de Bash y te has preguntado cómo asegurarte de que funcionen
correctamente, ¡este artículo es para ti!
¿Qué es bashunit?
bashunit es una herramienta diseñada para escribir y ejecutar pruebas
unitarias para scripts escritos en Bash. Su propósito es validar que cada
“unidad” de tu código funcione como se espera.
¿Por qué usar bashunit?
- Confianza en tu código: Las pruebas te dan confianza en que tu código funciona como esperas.
- Desarrollo dirigido por pruebas (TDD): Si nos conoces ya sabes de lo que hablo y si no, en nuestro blog puedes encontrar varios artículos centrados en este tema.
- Refactorización segura: Al hacer cambios, las pruebas te ayudan a asegurarte de que no rompas la funcionalidad existente. Este concepto se conoce como “Parallel change”.
Ejemplo básico de bashunit
# math_functions.sh
function sumar() {
echo $(($1 + $2))
}
# test_math_functions.sh
source bashunit.sh
source math_functions.sh
function test_sumar_basic() {
local result=$(sumar 3 4)
bashunit.test.assert_equals 7 $result
}
bashunit.test.run_tests
Casos de uso comunes
- Assetions: Validar la entrada, salida y estado de comandos
- Testear ficheros y directorios temporales
- Medir cobertura de código
- Mocking
Mocking con bashunit
El “mocking” es una técnica que te permite simular el comportamiento de funciones o comandos reales en tus pruebas, para que puedas concentrarte en probar la lógica de tu código sin depender de comportamientos externos.
Consideremos el siguiente ejemplo:
# En tu código
function my_grep() {
grep $@
}
function my_function_that_uses_grep() {
if my_grep "val" $1; then
return 1
fi
return 0
}
# En tu prueba
bashunit.test.mock.returns "my_grep" 0
bashunit.test.assert_return "my_function_that_uses_grep" 1
Aquí, my_grep es simplemente una envoltura alrededor del comando grep real.
Sin embargo, en la prueba, no queremos depender del comportamiento real de
grep, así que lo “mockeamos” para que siempre devuelva 0 (indicando éxito).
Luego, probamos my_function_that_uses_grep para ver cómo se comporta cuando
my_grep tiene éxito. Esta es la esencia del mocking: simular comportamientos
para crear escenarios de prueba controlados.
Conclusión
Las pruebas unitarias son esenciales para un desarrollo robusto y confiable. Con
herramientas como bashunit, puedes llevar las pruebas unitarias a tus scripts
Bash, asegurando que funcionen en diversos escenarios. Ya sea que necesites
simular comportamientos con “mocking”, trabajar con archivos temporales, o medir
la cobertura de tu código, bashunit te brinda las herramientas necesarias para
hacerlo. ¡Feliz scripting y pruebas!
Para aquellos interesados en profundizar en bashunit y explorar todas sus
características, pueden visitar el repositorio oficial en
[GitHub y su
[X (Twitter) donde son muy activos.
Si no conoces, o quieres darle una vuelta de tuerca a los conceptos de testing, ¡en nuestro blog y redes puedes encontrar más contenido!