Haciendo del Desarrollo y la Arquitectura Web, ciencia y pasión.

Uso de Pytest para pruebas unitarias

Aquí teneis un listado de los comandos más importantes de pytest, una de las herramientas más utilizadas para pruebas en Python.


🚀 Comandos básicos de pytest

1️⃣ Ejecutar todas las pruebas en el proyecto

pytest

Ejecuta automáticamente todas las pruebas encontradas en archivos con prefijo test_ o sufijo _test.py.

2️⃣ Ejecutar pruebas de un archivo específico

pytest test_mi_modulo.py

Ejecuta solo las pruebas dentro de test_mi_modulo.py.

3️⃣ Ejecutar un solo test dentro de un archivo

pytest test_mi_modulo.py::test_funcion_especifica

Ejecuta solo la función de prueba test_funcion_especifica dentro del archivo test_mi_modulo.py.

4️⃣ Mostrar más detalles en la salida (modo verboso)

pytest -v

Muestra más información sobre cada prueba ejecutada.

5️⃣ Detener la ejecución en el primer fallo

pytest -x

Detiene la ejecución en cuanto una prueba falla.


🔥 Opciones avanzadas

6️⃣ Reintentar pruebas fallidas

pytest --maxfail=3

Detiene la ejecución después de 3 fallos.

7️⃣ Ejecutar solo pruebas que fallaron en la última ejecución

pytest --lf

(--last-failed) Reejecuta solo las pruebas fallidas en la última ejecución.

8️⃣ Volver a ejecutar automáticamente las pruebas fallidas varias veces

pytest --reruns 3

Ejecuta nuevamente las pruebas fallidas hasta 3 veces antes de reportarlas como fallidas.

9️⃣ Ejecutar pruebas con cobertura de código

pytest --cov=mi_modulo

Requiere pytest-cov. Muestra qué partes del código fueron ejecutadas durante las pruebas.

🔟 Ejecutar pruebas paralelamente

pytest -n auto

Requiere pytest-xdist. Ejecuta pruebas en paralelo usando múltiples núcleos del procesador.


🧪 Filtrado de pruebas

🔹 Ejecutar solo pruebas con un nombre específico

pytest -k "nombre_test"

Ejecuta solo las pruebas que contengan "nombre_test" en su nombre.

🔹 Ejecutar pruebas de una clase específica

pytest test_mi_modulo.py::TestClase

Ejecuta todas las pruebas dentro de TestClase.

🔹 Ejecutar solo pruebas con un marcador específico

pytest -m "marca_especifica"

Ejecuta solo las pruebas que tengan el decorador @pytest.mark.marca_especifica.


🛠 Depuración y análisis

🔹 Depurar cuando una prueba falla

pytest --pdb

Abre el depurador interactivo (PDB) en el punto exacto donde falló la prueba.

🔹 Mostrar cada print() en tiempo real

pytest -s

Evita que pytest capture la salida de print() y la muestra en la terminal en tiempo real.

🔹 Generar un informe en JUnit (para integración con CI/CD)

pytest --junitxml=report.xml

Crea un archivo report.xml con los resultados de las pruebas, útil en integración continua (CI/CD).