PYTEST_ADDOPTS e como desabilitar warnings no pytest
Ao executar testes automatizados em Python, é comum receber avisos (warnings) durante a execução dos testes. Para lidar com esses avisos, o Pytest oferece diversas opções para desativá-los. Neste artigo vamos explorar como utilizar a PYTEST_ADDOPTS
para desabilita-los.
Entendendo o problema
Vamos imaginar que estamos executando testes em uma aplicação Python utilizando o Pytest e nos deparamos com a seguinte saída:
|
|
Esses avisos podem ser gerados por diversos motivos, como o uso de funções obsoletas, comportamentos não recomendados, entre outros, e são úteis para que o desenvolvedor identifique possíveis problemas na sua aplicação ou nas bibliotecas utilizadas. No entanto, em alguns casos, eles podem não ser importantes para o teste em questão, sujando a tela e tirando o foco do resultado dos testes.
Entendendo o PYTEST_ADDOPTS
PYTEST_ADDOPTS¶ This contains a command-line (parsed by the py:mod:shlex module) that will be prepended to the command line given by the user, see Builtin configuration file options for more information.
O PYTEST_ADDOPTS é uma variável de ambiente, que armazena parâmetros de linha de comando, que durante a execução do pytest serão adicionados a linha de comando fornecida pelo usuário. É possível defini-la exportando-a no terminal ou direto no arquivo Makefile
.
Desativando os avisos na linha de comando
Para desabilitar os avisos (warnings) no pytest, podemos utilizar a opção -p no:warnings
. Veja o exemplo a seguir:
|
|
Outra opção é exportar a variável de ambiente PYTEST_ADDOPTS
com a opção -p no:warnings
. Para isso usamos o comando export
, veja o exemplo abaixo:
|
|
Com a variável PYTEST_ADDOPTS
definida, o pytest
será executado com a opção -p no:warnings
, que desabilita todos os avisos (warnings) durante a execução dos testes. Caso você queira desabilitar somente alguns avisos específicos, é possível utilizar a opção -W
do pytest
em conjunto com a opção -p no:warnings
. Veja o exemplo abaixo:
|
|
Com a opção -W ignore::DeprecationWarning
, o pytest
irá desabilitar somente os avisos do tipo DeprecationWarning
.
Para remover a variável PYTEST_ADDOPTS
, use o comando:
|
|
Utilizando o comando env
a variável de ambiente PYTEST_ADDOPTS
será definida apenas para a execução do pytest
e não afetará outras execuções. Veja o exemplo abaixo:
|
|
Desativar os avisos usando o makefile
Para utilizar o PYTEST_ADDOPTS
em conjunto com o Makefile
, podemos definir a variável de ambiente no início do arquivo, antes da definição da regra test
. Veja o exemplo abaixo:
|
|
Conclusão
O Pytest é uma ferramenta importante para garantir a qualidade do código em projetos Python. No entanto, durante a execução dos testes automatizados, podem ser gerados avisos (warnings) que, em alguns casos, podem ser irrelevantes. Nesse sentido, a opção -p no:warnings
, definida na variável de ambiente PYTEST_ADDOPTS¶ pode ser utilizada para desativar todos os avisos durante a execução dos testes. No entanto, é importante lembrar que esses avisos podem conter informações importantes para identificar possíveis problemas na aplicação ou bibliotecas utilizadas. Portanto, a desativação dos avisos deve ser feita com cuidado e de forma criteriosa, de modo a não comprometer a qualidade do código.