Existe uma maneira de suprimir os avisos de depreciação internos do pytest?
Contexto: Estou procurando avaliar a dificuldade de portar um conjunto de testes de nose
para pytest
. O conjunto é bastante grande e usa geradores de teste baseados no nose
estilo de uso intenso yield
.
Gostaria de primeiro ter certeza de que os testes existentes passam com o pytest e, em seguida, talvez alterar os geradores de teste para parameterized
.
Apenas rodar $ pytest path-to-test-folder
com o pytest 3.0.4 é completamente dominado por páginas e páginas de
WC1 ~repos/numpy/numpy/lib/tests/test_twodim_base.py yield tests are deprecated, and scheduled to be removed in pytest 4.0
Existe uma maneira de desligar esses avisos?
pytest -p no:warnings
ou adicione o seguinte ao seu pytest.ini ou tox.ini:O resultado será verde sem qualquer indicação de avisos. Consulte a documentação em https://docs.pytest.org/en/latest/warnings.html#disabling-warnings-summary .
Este pode ser um caso de uso válido para um conjunto de testes em que você deseja uma saída limpa.
Esteja ciente de que sempre ocultar todos os avisos pode fazer com que você perca avisos importantes. Se você quiser ocultar apenas avisos específicos, veja a resposta de Cloc .
fonte
addopts = -p no:warnings
é uma ideia MUITO RUIM e a solução CloC é muito mais sã, mas tive que usar a sua quandoignore::InsecureRequestWarning
não foi reconhecida, então você também ganha +1Acho que você não quer esconder todos os avisos, mas apenas aqueles que não são relevantes. E, neste caso, avisos de depreciação de módulos Python importados.
Ler a documentação do pytest sobre Captura de avisos :
Assim, você pode filtrar avisos com a
-W
opção do python !Parece que
pytest
remove completamente os filtros, porque mostra todos elesDeprecationWarning
durante a execução, e a documentação do Python sobre Filtros de Aviso Padrão diz claramente:Portanto, no seu caso, se você quiser filtrar os tipos de aviso que deseja ignorar, como esses
DeprecationWarning
, basta executar o comando pytest com a-W
opção:EDITAR : A partir do comentário do colini , é possível filtrar por módulo. Exemplo para ignorar avisos de suspensão de uso de todos os sqlalchemy:
Você pode então listar seus módulos instalados que criam muito ruído na saída de
pytest
Use com arquivo em vez de linha de comando:
Você pode preferir listar esses filtros no arquivo pytest.ini:
fonte
ignore::DeprecationWarning:sqlalchemy.*:
No arquivo pytest.ini, você pode adicionar:
OU passando abaixo da linha na linha de comando. Isso pode ser útil se seus suítes de teste tratam de avisos usando um sistema externo.
OU se você deseja apenas ocultar algum aviso específico obsoleto, adicione a instrução abaixo em seu arquivo pytest.ini
Isso irá ignorar todos os avisos do tipo DeprecationWarning, em que o início da mensagem corresponde à expressão regular ". * U. * mode is deprecated".
OU Embora não seja recomendado, você pode usar o
opção de linha de comando para suprimir totalmente o resumo do aviso da saída da execução do teste.
fonte
Eu não quero esconder todos os avisos, então coloquei isso
pytest.ini
fonte