Repolode
pytest-dev

pytest-dev/pytest-randomly

Un plugin de pytest que mezcla el orden de las pruebas y restablece las semillas aleatorias para reproducir fallos causados por el orden o por datos aleatorios.

Estrellas
724
Forks
39
Issues abiertos
5
Último commit
hace 5 días

¿Qué es?

pytest-randomly es un plugin para el framework de pruebas de Python pytest. De forma predeterminada, mezcla el orden de las pruebas por módulo, luego por clase y, por último, por función, lo que ayuda a detectar dependencias ocultas entre pruebas.

Cada ejecución de pruebas muestra una semilla aleatoria base que se puede volver a pasar con --randomly-seed (o con el valor last) para repetir el mismo orden y los mismos datos. Al inicio de cada fase de preparación, ejecución y limpieza de cada prueba, el plugin restablece la semilla global de random de Python a partir de esa semilla base y del ID de la prueba, para que las pruebas que dependen de datos aleatorios sigan siendo repetibles. También restablece el estado aleatorio de factory boy, Faker, Model Bakery, el generador heredado de NumPy y Polyfactory.

Ambos comportamientos se pueden desactivar mediante flags, y el plugin admite generadores aleatorios personalizados a través del punto de entrada pytest_randomly.random_seeder. Es compatible con pytest-xdist.

Funciones clave

  • 01Mezcla el orden de las pruebas por módulo, clase y función
  • 02Acepta una semilla con --randomly-seed, incluido 'last' para reutilizar la anterior
  • 03Restablece las semillas aleatorias antes de la preparación, ejecución y limpieza de cada prueba
  • 04Restablece el estado aleatorio de factory boy, Faker, Model Bakery, NumPy y Polyfactory
  • 05Admite generadores aleatorios personalizados mediante un punto de entrada
  • 06Es compatible con pytest-xdist

Casos de uso

  • Detectar pruebas que solo pasan porque otra prueba se ejecutó antes
  • Reproducir un fallo intermitente causado por el orden de las pruebas o por datos de prueba aleatorios
  • Escribir pruebas con datos generados por factories que deban seguir siendo repetibles
  • Depurar la contaminación entre pruebas volviendo a ejecutar un único módulo con la misma semilla

Inicio rápido

  1. 1

    Instala el plugin con pip

    python -m pip install pytest-randomly
  2. 2

    Ejecuta pytest; el plugin mezcla las pruebas automáticamente e imprime la semilla

    pytest

Antes de usarlo

  • Requiere Python 3.11 a 3.15 y el ejecutor de pruebas pytest.

En colecciones

Temas

#pytest#testing#python#test-ordering#random-seed#test-isolation

Preguntas frecuentes

¿Qué es pytest-randomly?
Un plugin de pytest que mezcla el orden de las pruebas y restablece las semillas aleatorias para reproducir fallos causados por el orden o por datos aleatorios. pytest-randomly es un plugin para el framework de pruebas de Python pytest. De forma predeterminada, mezcla el orden de las pruebas por módulo, luego por clase y, por último, por función, lo que ayuda a detectar dependencias ocultas entre pruebas.
¿pytest-randomly es gratuito? ¿Qué licencia tiene?
pytest-randomly es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿pytest-randomly sigue mantenido?
Mantenimiento activo. El último commit de pytest-randomly fue el 2 nov 2026.
¿Para qué puedo usar pytest-randomly?
Detectar pruebas que solo pasan porque otra prueba se ejecutó antes Reproducir un fallo intermitente causado por el orden de las pruebas o por datos de prueba aleatorios Escribir pruebas con datos generados por factories que deban seguir siendo repetibles Depurar la contaminación entre pruebas volviendo a ejecutar un único módulo con la misma semilla
¿Cómo se instala pytest-randomly?
Instala el plugin con pip: python -m pip install pytest-randomly Ejecuta pytest; el plugin mezcla las pruebas automáticamente e imprime la semilla: pytest
¿Dónde consigo pytest-randomly?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/pytest-dev/pytest-randomly

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados