Repolode
pytest-dev

pytest-dev/pytest-randomly

Plugin do pytest que embaralha a ordem dos testes e redefine as seeds aleatórias para reproduzir falhas causadas pela ordem ou por dados aleatórios.

Estrelas
724
Forks
39
Issues abertas
5
Último commit
há 4 dias

O que é?

pytest-randomly é um plugin para o framework de testes Python pytest. Por padrão, ele embaralha a ordem dos testes por módulo, depois por classe e, por fim, por função, ajudando a revelar dependências ocultas entre os testes.

Cada execução dos testes exibe uma seed aleatória base, que pode ser informada novamente com --randomly-seed (ou com o valor last) para repetir a mesma ordem e os mesmos dados. No início de cada etapa de setup, execução e teardown de cada teste, o plugin redefine a seed aleatória global do Python com base nessa seed e no ID do teste, mantendo reproduzíveis os testes que usam dados aleatórios. Ele também redefine o estado aleatório de factory boy, Faker, Model Bakery, do gerador legado do NumPy e do Polyfactory.

É possível desativar ambos os comportamentos com flags, e o plugin aceita geradores aleatórios personalizados pelo entry point pytest_randomly.random_seeder. Ele funciona com pytest-xdist.

Recursos principais

  • 01Embaralha a ordem dos testes por módulo, classe e função
  • 02Aceita uma seed com --randomly-seed, incluindo 'last' para reutilizar a seed anterior
  • 03Redefine as seeds aleatórias antes do setup, da execução e do teardown de cada teste
  • 04Redefine o estado aleatório de factory boy, Faker, Model Bakery, NumPy e Polyfactory
  • 05Aceita geradores aleatórios personalizados por meio de um entry point
  • 06Funciona com pytest-xdist

Casos de uso

  • Encontrar testes que só passam porque outro teste foi executado antes
  • Reproduzir uma falha intermitente causada pela ordem dos testes ou por dados de teste aleatórios
  • Escrever testes com dados gerados por factories que precisam continuar reproduzíveis
  • Investigar interferências entre testes executando novamente um único módulo com a mesma seed

Início rápido

  1. 1

    Instale o plugin com pip

    python -m pip install pytest-randomly
  2. 2

    Execute pytest; o plugin embaralha os testes automaticamente e imprime a semente

    pytest

Antes de usar

  • Requer Python 3.11 a 3.15 e o executor de testes pytest.

Em coleções

Tópicos

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

Perguntas frequentes

O que é pytest-randomly?
Plugin do pytest que embaralha a ordem dos testes e redefine as seeds aleatórias para reproduzir falhas causadas pela ordem ou por dados aleatórios. pytest-randomly é um plugin para o framework de testes Python pytest. Por padrão, ele embaralha a ordem dos testes por módulo, depois por classe e, por fim, por função, ajudando a revelar dependências ocultas entre os testes.
pytest-randomly é gratuito? Qual é a licença?
pytest-randomly é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
pytest-randomly ainda é mantido?
Manutenção ativa. O último commit de pytest-randomly foi em 2 de nov. de 2026.
Para que posso usar pytest-randomly?
Encontrar testes que só passam porque outro teste foi executado antes Reproduzir uma falha intermitente causada pela ordem dos testes ou por dados de teste aleatórios Escrever testes com dados gerados por factories que precisam continuar reproduzíveis Investigar interferências entre testes executando novamente um único módulo com a mesma seed
Como instalar pytest-randomly?
Instale o plugin com pip: python -m pip install pytest-randomly Execute pytest; o plugin embaralha os testes automaticamente e imprime a semente: pytest
Onde consigo pytest-randomly?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/pytest-dev/pytest-randomly

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados