Pruebas Parametrizadas con PyTest: Instalación y Ejecución
Clase 19 de 20 • Curso de Unit Testing en Python
Resumen
Python ofrece una gran variedad de herramientas, y una de las más útiles para pruebas automatizadas es PyTest. PyTest mejora considerablemente la experiencia del desarrollador al permitir escribir y ejecutar pruebas de manera más eficiente. En esta guía veremos cómo instalar PyTest, crear pruebas parametrizadas y ejecutar un ejemplo básico.
¿Cómo instalar y configurar PyTest?
- Abre la terminal y ejecuta el siguiente comando para instalar PyTest:
pip install pytest
- Recuerda agregarlo a tu archivo
requirements.txt
con:pip freeze | grep pytest > requirements.txt
¿Cómo crear una prueba con PyTest?
- En la carpeta de pruebas, crea un archivo llamado
test_pytest.py
. - Importa PyTest en tu archivo:
import pytest
- Crea una función de prueba simple como esta:
def test_suma(): a = 4 b = 4 assert a + b == 8
- Ejecuta la prueba con el siguiente comando:
pytest test_pytest.py
PyTest no requiere la creación de clases para agrupar pruebas, lo cual simplifica el código. En este caso, las pruebas se agrupan por archivo.
¿Cómo parametrizar una prueba en PyTest?
- Utiliza decoradores de PyTest para parametrizar la prueba:
@pytest.mark.parametrize("amount, expected", [ (100, 5000), (200, 5500), (300, 6000) ]) def test_balance(amount, expected): assert calcular_balance(amount) == expected
- En este ejemplo, la función de prueba recibe varios casos con valores diferentes de
amount
yexpected
. - Ejecuta las pruebas:
pytest -v
¿Qué ventajas ofrece PyTest al ejecutar pruebas?
- PyTest ofrece mensajes de error detallados y fáciles de leer, resaltados con colores.
- Los errores incluyen los valores específicos que causaron la falla.
- Con la opción
-v
, PyTest detalla qué pruebas se ejecutaron y sus resultados.
¿Qué ocurre si una prueba falla?
Si una prueba falla, PyTest te indicará exactamente qué valores no coincidieron. Por ejemplo, si uno de los valores esperados es incorrecto:
def test_balance():
assert calcular_balance(100) == 5400 # Este valor está incorrecto
Al ejecutar nuevamente la prueba, PyTest te mostrará la diferencia entre el valor esperado y el real.
Reto
Refactoriza todas las pruebas de tu proyecto para que utilicen PyTest, aplicando lo que hemos visto sobre parametrización y el uso de asserts más sencillos.