unittest
unittest
es el módulo de pruebas unitarias incorporado en la biblioteca estándar de Python. Proporciona una forma estructurada de escribir y ejecutar pruebas.
unittest
1. Importar el módulo unittest
.
2. Crear una clase de prueba que herede de unittest.TestCase
.
3. Definir métodos dentro de la clase de prueba que comiencen con test_
.
4. Utilizar métodos de aserción para verificar los resultados esperados.
Supongamos que tenemos una función simple suma
que queremos probar:
def suma(a, b):
return a + b
Podemos escribir una prueba unitaria para esta función de la siguiente manera:
import unittest
class TestSuma(unittest.TestCase):
def test_suma_positivos(self):
self.assertEqual(suma(1, 2), 3)
def test_suma_negativos(self):
self.assertEqual(suma(-1, -1), -2)
def test_suma_positivo_negativo(self):
self.assertEqual(suma(1, -1), 0)
if __name__ == '__main__':
unittest.main()
unittest
Para ejecutar las pruebas, simplemente ejecuta el archivo de prueba desde la línea de comandos:
python nombre_del_archivo_de_prueba.py
pytest
pytest
es una herramienta de pruebas más poderosa y flexible que unittest
. Es especialmente útil para proyectos grandes y complejos, y tiene una sintaxis más simple y concisa.
pytest
Primero, necesitas instalar pytest
si no lo tienes:
pip install pytest
pytest
1. Crear funciones de prueba que comiencen con test_
.
2. Utilizar aserciones estándar de Python.
Usando la misma función suma
, podemos escribir pruebas con pytest
de la siguiente manera:
def suma(a, b):
return a + b
def test_suma_positivos():
assert suma(1, 2) == 3
def test_suma_negativos():
assert suma(-1, -1) == -2
def test_suma_positivo_negativo():
assert suma(1, -1) == 0
pytest
Para ejecutar las pruebas, simplemente ejecuta el comando pytest
en el directorio que contiene tu archivo de prueba:
pytest
pytest
pytest
proporciona fixtures
que son funciones reutilizables para configurar y limpiar datos de prueba.
import pytest
@pytest.fixture
def datos():
return 1, 2
def test_suma_con_datos(datos):
a, b = datos
assert suma(a, b) == 3
@pytest.mark.lento
def test_prueba_lenta():
# código de prueba que toma tiempo
pass
# Ejecutar solo las pruebas marcadas como "lento"
pytest -m lento
pytest
tiene un ecosistema robusto de plugins que pueden extender su funcionalidad.
1. Escribe pruebas pequeñas y enfocadas: Cada prueba debe enfocarse en una pequeña parte del código.
2. Nombra tus pruebas descriptivamente: Usa nombres que describan lo que la prueba está verificando.
3. Usa fixtures para datos repetitivos: Esto hace que tus pruebas sean más limpias y fáciles de mantener.
4. Ejecuta pruebas frecuentemente: Integrar las pruebas en tu flujo de trabajo de desarrollo te ayuda a detectar errores temprano.
Las pruebas unitarias son esenciales para mantener la calidad y la fiabilidad de tu código. Tanto unittest
como pytest
son herramientas poderosas para escribir y ejecutar pruebas en Python. unittest
es ideal para proyectos pequeños o para quienes prefieren una solución incorporada, mientras que pytest
ofrece una mayor flexibilidad y características avanzadas que pueden beneficiar a proyectos más grandes y complejos.
Jorge García
Fullstack developer