Fazer mocks de variáveis globais em testes Python
Estava tentando testar algumas variáveis globais com Python, especialmente para um script que contém variáveis globais. E depois de tentar e falhar, acho que posso mostrar a versão mais simples para fazê-lo.
🏃 A solução rápida
E agora em seu arquivo de teste, você pode fazer o seguinte.
Depois disso, em seu arquivo demo_file
, a variável ENVS seria mocks.
✏️ Solução com descrição
Requisitos
Para simplicidade do trabalho. Eu recomendo a seguinte biblioteca: https://pypi.org/project/pytest-mock/
Que eu estava tentando fazer?
Primeiro, vamos supor que você tenha um arquivo chamado demo_file.py
com o seguinte conteúdo (e onde a variável global está localizada).
Se você tentar executar simple_method
, ele imprimirá o dicionário com real_value
e another_real_value
lá.
Agora temos o seguinte arquivo de teste.
Sei que o teste parece simples, mas está garantindo que pelo menos está retornando um valor zero após imprimir os valores do ENV.
👾 Fazer mock da variável
Mas como você vê, estamos chamando as variáveis de ambiente no computador atual e, se você escrever seus testes esperando tê-los em seu servidor CI/CD, os testes começarão a falhar. Como podemos evitar isso e dizer a nosso servidor de teste (ou pipeline de teste) que queremos valores fixos específicos?
Se você instalou o pacote mencionado acima, na seção de requisitos, é muito fácil começar a fazer mocks de valores. Então, só precisamos adicionar uma única linha.
E seus testes não executarão a variável ENVS real e, portanto, não chamarão os os.environ
.