Pytest es un framework que nos sirve para crear pruebas a nuestro código Python. Facilita la escritura de pruebas pequeñas y legibles, y puede escalar para soportar pruebas funcionales complejas para aplicaciones y bibliotecas.
Para quien sepa la filosofía TDD entederá.
La instalación no nos lleverá mucho tiempo. Abrimos una terminal y escribimos:
$ pip install -U pytest
Si ha funcionado, verificamos:
$ pytest --version
¿Qué podemos hacer con Pytest? Básica y llanamente nos permite escribir y ejecutar pruebas automatizadas (unitarias, de integración, funcionales y en-to-end) en Python. Esto para tener una mejor calidad de código y evitar futuros errores.
¿Cómo funciona? Veamos un ejemplo.
Escribamos una función para sumar dos números. Escribimos un test que falle.
pruebas.py
import pytest # Función que sume dos números def add(x, y): return x + y # Prueba que falle, 3 + 4 no da 5 def test_fail_add(): assert add(3,4) == 5
Ejecutemos la prueba:
$ python prueba.py
Salida:
collected 1 item prueba.py F [100%] ====================================================== FAILURES ======================================================= ______________________________________________________ test_add _______________________________________________________ def test_fail_add(): > assert add(3,4) == 5 E assert 7 == 5 E + where 7 = add(3, 4) prueba.py:12: AssertionError =============================================== short test summary info =============================================== FAILED curso.py::test_fail_add - assert 7 == 5 ================================================== 1 failed in 0.84s ==================================================
Comentemos el test que falla y escribamos un test que pase.
import pytest # Función que sume dos números def add(x, y): return x + y # Prueba que falle, 3 + 4 no da 5 #def test_fail_add(): #assert add(3,4) == 5 # Prueba exitosa def test_success_add(): assert add(3,4) == 7
Ejecutemos de nuevo:
$ python prueba.py
Salida:
========================================================================= test session starts ========================================================================= platform win32 -- Python 3.13.3, pytest-8.4.1, pluggy-1.6.0 rootdir: C:\Users\HP\Documents\pruebasPython collected 1 item prueba.py . [100%] ========================================================================== 1 passed in 0.08s ==========================================================================
Ya no hay excusa para crear pruebas a tu código Python.
Continuaremos con esta serie sobre Python.
Enlaces:
https://docs.pytest.org/en/stable/
Comentarios
Publicar un comentario