Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Teste automatizado com Pytest (Sistema Operacional????)

Olá pessoal,

Minha dúvida é referente a terceira aula do segundo módulo (PyTest) do curso de Python e TDD.

Estou enfrentando um problema com a estrutura de diretórios ao tentar reproduzir a demonstração da aula, acredito que por causa do sistema operacional macOS (iOS Ventura 13.0). No Windows funciona perfeitamente, testei para comprovar.

No curso, foi sugerido criar uma pasta "test" dentro da pasta "codigo" para armazenar o arquivo "test_bytebank.py", enquanto o arquivo "bytebank.py" permaneceria na pasta "codigo". No entanto, ao seguir essa estrutura de diretórios, o teste não é executado corretamente e não consigo importar o módulo Funcionario do arquivo bytebank.py.

Para contornar o problema, tive que trazer o arquivo "test_bytebank.py" para a mesma pasta "codigo" onde está localizado o arquivo "bytebank.py". Dessa forma, o teste é executado corretamente.

Minha dúvida é se essa diferença na estrutura de diretórios é um problema específico do sistema operacional macOS ou se estou fazendo algo errado. Existe alguma forma de configurar o macOS para que eu possa reproduzir a estrutura de diretórios sugerida na aula e executar os testes corretamente?

Agradeço antecipadamente pela ajuda! Izael Castro

2 respostas

Olá Izael, tudo bem?

Entendo seu ponto, e acredito que posso ajudar! O problema que você está enfrentando não é específico do macOS, mas sim uma questão de como o Python lida com a importação de módulos a partir de diferentes diretórios.

No Python, quando você tenta importar um módulo, o interpretador procura por ele em uma lista de diretórios definidos pela variável de ambiente PYTHONPATH, além do diretório local. Se o módulo não estiver em nenhum desses lugares, você receberá um erro de importação.

No seu caso, quando você tenta importar o módulo Funcionario do arquivo bytebank.py a partir do arquivo test_bytebank.py que está em um diretório diferente, o interpretador não consegue encontrar o módulo porque ele não está no PYTHONPATH ou no mesmo diretório que o arquivo test_bytebank.py.

Uma solução para isso seria adicionar o diretório que contém o arquivo bytebank.py ao PYTHONPATH. No macOS, você pode fazer isso da seguinte maneira:

  1. Abra o Terminal
  2. Digite o seguinte comando: export PYTHONPATH="${PYTHONPATH}:/caminho/para/o/diretorio"

Substitua "/caminho/para/o/diretorio" pelo caminho real para o diretório que contém o arquivo bytebank.py. Agora, o interpretador Python deve ser capaz de encontrar o módulo Funcionario quando você tentar importá-lo a partir do arquivo test_bytebank.py.

Outra solução seria usar pacotes relativos em Python. Por exemplo, se o arquivo test_bytebank.py estiver em um subdiretório do diretório que contém o arquivo bytebank.py, você poderia importar o módulo Funcionario da seguinte maneira:

from ..codigo.bytebank import Funcionario

O ".." antes de "codigo" indica ao interpretador Python para procurar no diretório pai do diretório atual.

Espero que isso esclareça sua dúvida! Lembre-se, essas são apenas sugestões e pode haver outras maneiras de resolver o problema. Espero ter ajudado e bons estudos!

solução!

Olá Renan,

muito obrigado pela ajuda, tentarei seguir o procedimento e te dou um retorno.

Por enquanto, consegui resolver dessa maneira.

Esse é o meu diretório: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Clicando com o direito na pasta "codigo" eu consigo abrir um terminal nela.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

A partir dai foi só seguir as instruções que funcionou.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Att Izael Castro