Ejemplo unittest
Aquí te mostraré cómo hacer un test unitario sencillo en Python utilizando el módulo de pruebas unittest
, que es parte de la biblioteca estándar de Python. En este ejemplo, crearemos una función simple que sumará dos números y luego escribiremos un test unitario para verificar su funcionamiento.
Paso 1: Definir la Función a Probar
Primero, definiremos una función simple que sume dos números en un archivo llamado mi_modulo.py
:
# mi_modulo.py
def sumar(a, b):
return a + b
Paso 2: Escribir el Test Unitario
Luego, crearemos un archivo de prueba llamado test_mi_modulo.py
utilizando el módulo unittest
. En este archivo, importaremos la función sumar
y escribiremos un test unitario para ella.
# test_mi_modulo.py
import unittest
from mi_modulo import sumar
class TestMiModulo(unittest.TestCase):
def test_sumar(self):
resultado = sumar(2, 3)
self.assertEqual(resultado, 5) # Verificamos que la suma sea igual a 5
if __name__ == '__main__':
unittest.main()
En este ejemplo, hemos creado una clase TestMiModulo
que hereda de unittest.TestCase
. Dentro de esta clase, definimos un método test_sumar
que realiza una llamada a la función sumar(2, 3)
y luego utiliza self.assertEqual
para verificar que el resultado sea igual a 5. Si la afirmación es verdadera, el test se considera exitoso.
Paso 3: Ejecutar el Test
Para ejecutar el test, simplemente ejecutamos el archivo test_mi_modulo.py
desde la línea de comandos o desde un entorno de desarrollo como PyCharm:
python test_mi_modulo.py
Si todo está configurado correctamente y la función sumar
funciona como se espera, el test se ejecutará sin errores. Obtendrás una salida que indica que se ha ejecutado una prueba y si fue exitosa o no.
Los tests unitarios suelen ser más complejos que este ejemplo, pero esta es una introducción básica para mostrarte cómo escribir y ejecutar tests con unittest
. Puedes agregar más casos de prueba y considerar situaciones límite o excepcionales para garantizar que tu código funcione correctamente en todas las condiciones. Además, hay otros frameworks de pruebas como pytest
que proporcionan funcionalidades avanzadas y una sintaxis más concisa para escribir pruebas unitarias en Python.
El módulo unittest
en Python proporciona un conjunto de métodos de aserción (assertions) que se utilizan en las pruebas unitarias para verificar diferentes condiciones y comparar valores. Aquí tienes una lista de algunas de las aserciones comunes en unittest
junto con ejemplos:
- assertEqual(a, b, msg=None): Verifica si
a
es igual ab
.
self.assertEqual(5, 5) # True
- assertNotEqual(a, b, msg=None): Verifica si
a
no es igual ab
.
self.assertNotEqual(5, 10) # True
- assertTrue(x, msg=None): Verifica si
x
es verdadero.
self.assertTrue(5 > 3) # True
- assertFalse(x, msg=None): Verifica si
x
es falso.
self.assertFalse(5 < 3) # True
- assertIs(a, b, msg=None): Verifica si
a
esb
(es decir, son el mismo objeto).
self.assertIs(obj1, obj2) # True si obj1 es obj2
- assertIsNot(a, b, msg=None): Verifica si
a
no esb
(es decir, no son el mismo objeto).
self.assertIsNot(obj1, obj2) # True si obj1 no es obj2
- assertIn(a, b, msg=None): Verifica si
a
está enb
.
self.assertIn(3, [1, 2, 3, 4, 5]) # True
- assertNotIn(a, b, msg=None): Verifica si
a
no está enb
.
self.assertNotIn(7, [1, 2, 3, 4, 5]) # True
- assertIsNone(x, msg=None): Verifica si
x
esNone
.
self.assertIsNone(my_var) # True
- assertIsNotNone(x, msg=None): Verifica si
x
no esNone
.
self.assertIsNotNone(my_var) # True
Estas son solo algunas de las aserciones disponibles en el módulo unittest
. Puedes combinar estas aserciones con otros métodos y estructuras de prueba para crear pruebas unitarias efectivas para tu código.