Puedes ejecutar cualquier ejemplo de esta guía directamente en nuestra consola interactiva: Abrir consola de Python →
Testing en Python: crea pruebas automatizadas con unittest
Las pruebas automatizadas permiten asegurar que tu código funciona correctamente y evitar errores en producción. En esta guía aprenderás a usar el módulo unittest, crear casos de prueba, usar asserts y ejecutar suites de tests.
Tabla de contenidos
- ¿Qué es el testing?
- Primer test con unittest
- Asserts más usados
- Tests para funciones
- Tests para clases
- Ejercicios
- Mini‑proyecto
- Preguntas frecuentes
1. ¿Qué es el testing?
El testing consiste en crear pruebas automatizadas que verifican que tu código funciona como debería. Python incluye el módulo unittest para crear tests de forma profesional.
2. Primer test con unittest
import unittest
class TestSuma(unittest.TestCase):
def test_suma(self):
self.assertEqual(2 + 2, 4)
if __name__ == "__main__":
unittest.main()
3. Asserts más usados
- assertEqual(a, b): a == b
- assertNotEqual(a, b): a != b
- assertTrue(x): x es True
- assertFalse(x): x es False
- assertRaises(error): se lanza un error
4. Tests para funciones
def sumar(a, b):
return a + b
import unittest
class TestFunciones(unittest.TestCase):
def test_sumar(self):
self.assertEqual(sumar(3, 7), 10)
5. Tests para clases
class Persona:
def __init__(self, nombre):
self.nombre = nombre
import unittest
class TestPersona(unittest.TestCase):
def test_nombre(self):
p = Persona("Iokelu")
self.assertEqual(p.nombre, "Iokelu")
6. Ejercicios
- Crea un test para una función que reste.
- Crea un test que verifique un error con assertRaises.
- Crea un test para una clase con dos atributos.
- Crea un test con assertTrue.
- Crea una suite de tests.
def restar(a, b): return a - b
self.assertEqual(restar(5, 3), 2)
with self.assertRaises(ValueError):
int("hola")
class Coche:
def __init__(self, marca, modelo):
self.marca = marca
self.modelo = modelo
self.assertTrue(10 > 5)
suite = unittest.TestLoader().loadTestsFromTestCase(TestPersona)
unittest.TextTestRunner().run(suite)
7. Mini‑proyecto: Probador de funciones matemáticas
def multiplicar(a, b):
return a * b
import unittest
class TestMath(unittest.TestCase):
def test_multiplicar(self):
self.assertEqual(multiplicar(3, 4), 12)
if __name__ == "__main__":
unittest.main()
8. Preguntas frecuentes
¿unittest es el único módulo de testing?
No, también existen pytest y nose2.
¿Debo testear todo mi código?
Idealmente sí, pero empieza por las partes críticas.