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

[Reclamação] Curso repleto de erros! E orientações que não funcionam!

Estou super indignado com as orientações aqui dadas e repetitivas sem solução alguma.

Como por exemplo o simples fato do python não estar reconhecendo hífem nas importações de módulo.

Dão diversas orientações que não resolvem e a solução é só renomear a pasta de ''python-tdd' para 'python_tdd' por exemplo.

Perdi meu tempo pelo suporte da Alura do whatsapp, fizeram eu esperar mais de 40 min pra retornar que seria antes necessário abrir um fórum.

Segue abaixo tempo de atendimento e eu tentando receber respostas (que triste):

Insira aqui a descrição dessa imagem para ajudar na acessibilidadePor várias vezes chamei e a pessoa sumiu...

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

Falta de respeito. Então pra que existe o atendimento "Falar com atendente".

Essa foi a última mensagem que uma tal de Carolina respondeu...

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

Ou seja, péssimos em atendimento quando o assunto é problema.

As orientções dos vídeos não funcionam, orientações que também não funcionam. Nunca definem uma solução definitiva para importação de módulos por exemplo.

Em fim. já estou na base a mais de 4 anos e a partir deste ano deixarei de participar desta plataforma. Não renovarei mais. Perderam um cliente.

Além dos colegas aí que apontaram várias falhas segue mais uma:

1ª O PyCharm não apresenta seta alguma para realizar o teste como mostrado no vídeo.

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

2º A importação do mõdulo não funciona conforme orientado. As únicas formas que dão certo são as seguintes:

from unit_4.mod_1.p2.python_tdd.codigo.bytebank import Funcionario

Ou seja, o caminho completo.

import os, sys # Acusa erro porém funciona  # OK!
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))  # OK!
from codigo.bytebank import Funcionario  # Assim funciona # OK!

Ou desta forma, que acusa erro porém executa o programa.

Porém nenhuma das duas são suficientes para executar o teste.

Ahh antes de vir algum orientador vir falar das seguintes formas a baixo, já falo logo que não funcionam

# from codigo.bytebank import Funcionario  # Erro!
# from .codigo.bytebank import Funcionario  # Erro!
# from ..codigo.bytebank import Funcionario  # Erro!

Sem contar outras diversas que busquei em outros sites, inclusive em algumas dicas no stackoverflow, não funcionaram.

Essas foram as unicas formas que funcionaram pois o programa sai da pasta atual e chama outro arquivo de outra pasta de fora.

python-tdd (renomear para python_tdd se não da erro)
|
| codigo
        |
        | bytebank.py
|
| tests
        |
        | test_bytebank.py (este arquivo vai importar o arquivo bytebank.py e executar o teste)

Arvore no explorer do PyCharm:

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

Através desta importação ele acusa erro.

Além da seta acima que não é apresentado no pycharm segue erros abaixo. Executados pelo terminal através do seguinte comando:

pytest -v
Vou colocar como resposta pois o post tem limitação de caracteres. Pode isso? AFF

Atualizando (às 17:30)... A atendente não me respondeu mais lá pelo whatsapp (Me deixou sem solução e sem respostas), falou que era pra eu entrar em contato com o discord. E no discord fala para entrar em contato pelo whatsapp..

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

Atualizando.... ( às 17:50) Depois de uma vida a atendente me responde...!

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

Aff que absurdo!!! Menos um aluno na Alura. Não renovo mais.

8 respostas

Erro TErminal :

Erros:

(venv) PS D:\Users\Builder\Documents\Projetos e Criações\.Git\formacao-python\unit_4\mod_1\p2\python_tdd> pytest -v              
======================================================================================= test session starts ========================================================================================
platform win32 -- Python 3.12.1, pytest-7.1.2, pluggy-1.5.0 -- D:\Users\Builder\Documents\Projetos e Criações\.Git\formacao-python\unit_4\mod_1\p2\python_tdd\venv\Scripts\python.exe
cachedir: .pytest_cache
rootdir: D:\Users\Builder\Documents\Projetos e Criações\.Git\formacao-python\unit_4\mod_1\p2\python_tdd
collected 0 items / 1 error                                                                                                                                                                         

============================================================================================== ERRORS ==============================================================================================
_____________________________________________________________________________ ERROR collecting tests/test_bytebank.py ______________________________________________________________________________
ImportError while importing test module 'D:\Users\Builder\Documents\Projetos e Criações\.Git\formacao-python\unit_4\mod_1\p2\python_tdd\tests\test_bytebank.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
C:\Users\Builder\AppData\Local\Programs\Python\Python312\Lib\importlib\__init__.py:90: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests\test_bytebank.py:2: in <module>
    from unit_4.mod_1.p2.python_tdd.codigo.bytebank import Funcionario
E   ModuleNotFoundError: No module named 'unit_4'
===================================================================================== short test summary info ======================================================================================
ERROR tests/test_bytebank.py
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
========================================================================================= 1 error in 0.10s ========================================================================================= 
(venv) PS D:\Users\Builder\Documents\Projetos e Criações\.Git\formacao-python\unit_4\mod_1\p2\python_tdd> 

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

Para quem está passando por esse problema descobri como soluciona-lo apenas se for executado pelo terminal.

A solução foi mover a pasta do projeto para a mais "pura" possível, ou seja, coloca sua pasta o mais próximo da raiz.

Exemplo:

c:\\projetos\<coloque aqui sua pasta>

em seguida para importar o módulo use o seguinte código:

import os, sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))  # OK!
from codigo.bytebank import Funcionario  # Assim funciona # OK!

E rode pelo terminais os seguintes comandos a partir da pasta do projeto:

$ python -m venv venv
$ .\venv\Scripts\activate
$ pip install pytest==7.1.2
$ pytest -v

Segue saída no console:

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

Perceba que tive que colocar o projeto quase na raiz do disco:

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

Ainda estou a buscar uma solução para os problemas pelo PyCharm e pelo caminho normal do projeto.

Oi, Marcio!

Vou responder individualmente suas dúvidas abaixo para ficar mais fácil de acompanhar. Qualquer empecilho, me avise que tento explicar de outro modo ou tentar outra solução para você. Vamos lá?

1) Uso de hífen em nome de módulos

Realmente, o Python não permite o uso de hífens (-) em nomes de módulos, pois os hífens são interpretados como operadores de subtração. Em vez disso, é recomendável usar sublinhados (_) ou letras minúsculas sem espaços para nomes de módulos e pacotes.

2) Seta para executar os testes no PyCharm

  • Com o projeto aberto clique no botão File no canto superior esquerdo.

  • No menu de contexto aberto, clique em settings.

    Menu File do PyCharm aberto com a opção Settings em destaque

  • Será aberta a janela de configuração do PyCharm. No campo de pesquisa no alto e à esquerda da janela, pesquise por Default test runner.

  • Será encontrado o campo Default test runner, clique na seta à direita desse campo e escolha a opção pytest.

  • Abaixo na janela de configurações poderá aparecer uma placa amarela com um sinal de exclamação e a mensagem No pytest runner found in the selected interpreter, caso apareça, clique no botão Fix que está à direita da mensagem.

    Aba Settings mostrando as opções necessárias para habilitar a seta de execução dos testes no PyCharm

  • Após isso, basta clicar no botão OK.

  • Reinicie o PyCharm e abra o arquivo test_bytebank.py, nesse momento será apresentado o botão de execução dos testes, basta clicar em um deles para iniciar o teste.

    Imagem da seta sendo mostrada ao lado das linhas de código para rodar os testes no PyCharm

3) Importação do Módulo

Eu simulei a mesma estrutura de pastas que você e ao executar o comando pytest -v, tive o mesmo erro, veja na imagem a seguir:

Captura de tela de um terminal de computador exibindo testes de código Python com falha.

Para resolver, temos que adicionar o seguinte conteúdo no arquivo init.py que está dentro da pasta tests:

import sys
sys.path.append('.')

O sys.path é uma lista de diretórios que o intérprete Python verifica ao procurar módulos a serem importados. Imagine o sys.path como uma lista de lugares onde o Python procura pelos livros (módulos) que você quer ler (importar). Ao adicionar o código acima no sys.path você está explicitamente adicionando o diretório atual (representado por '.') ao sys.path. Isso permite que o Python encontre os módulos no diretório raiz do seu projeto quando você executa os testes.

Após isso, veja que os códigos funcionarão ao executar o comando pytest -v:

Imagem do PyCharm com os dois testes sendo aprovados

Espero ter ajudado, mas, se ainda ficar alguma dúvida, estou à disposição. Tentarei te responder o mais breve possível. Abraços!

Olá Nádia, primeiramente obrigado pelo retorno. Então, quando a configuração do pytest (seta verde) seguindo as orientações deram super certo! Já te agradeço.

Porém antes tive uns probleminhas para habilitar pois deu alguns erros no interpretador do python. Vou aproveitar e já colocar aqui a solução para quem estiver com problemas parecidos.

Primeiramente eu criei um novo interpretador em uma pasta limpa (seguindo os passos abaixo):

Criei uma pasta vazia chamada "interpretador_python" em:

D:\tmp\projetos_PATH\.system\interpretador_python

Logo após isso fui até o PyCharm e criei um novo interpretador (File > Settings > Buscar por "Python Interpreter")

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

No campo do Python Interpreter segui o passo do print abaixo:

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

Depois iremos criar um novo (clicando no "+"):

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

Agora no seguinte passo iremos selecionar a opção de criar um "novo" e informar a pasta "vazia" que criamos anteriormente:

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

Após isso, será acrescentado o interpretador que criamos, então é só selecionarmos o mesmo e dar "OK"

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

Na seguinte fase foi onde encontrei alguns erros. Após criarmos o interpretador, o python não encontra os pacotes padrões então é necessário instalados conforme imagem abaixo:

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

Ao clicar para instalar o PyCharm retornou diversos erros. Nessa fase, eu os ignorei e confirmei a seleção do novo interpretador em OK. Dando OK também nas próximas janelas de erros dos pacotes que o interpretador não encontrava.

Depois fui na pasta do projeto e selecionei para abrir pelo terminal:

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

É aqui que consegui solucionar o problema executando pelo terminal os seguintes comandos (pelo terminal do próprio PyCharm):

python -m ensurepip --upgrade
python.exe -m pip install --upgrade pip
python -m pip install --upgrade setuptools

Ou caso não atualize a atualização dos pacotes, vá até a pasta de "scripts" do próprio interpretador que criamos e code os comandos:

D:\tmp\projetos_PATH\.system\interpretador_python_teste\Scripts

Prontinho, após isso foi liberado o pytest. E consegui realizar o teste.

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

Oii Márcio, boaa tarde!

Fico muito feliz que o passo a passo tenha dado certo e obrigada por compartilhar como você solucionou o problema no interpretador.

Eu percebi nos seus últimos prints que você está utilizando o Python 3.12 e essa versão realmente tem algumas particularidades, ela é bem recente na verdade, tem menos de um ano (foi lançada em outubro de 2023) e por isso, alguns recursos nela são mais onerosos, porque os softwares ainda não se adaptaram a ela, como foi o caso da configuração do interpretador do PyCharm. Mas, pode seguir com essa versão normalmente no curso.

Se eu puder te ajudar em mais alguma dúvida, só dizer. Abraços!

Obrigado Nádia! Então, Já em relaçáo a modularização, como me orientaste não funcionou.

Fiz a inclusão das linhas no "_ _ init _ _.py"

import sys
sys.path.append('.')

e tentei a importação das seguintes maneiras:

Dessa forma, o próprio python sugere as inclusões das pastas e arquivos, não alerta erros porém não roda. Acusa erro no terminal.

from ..codigo.bytebank import Funcionario

Erro:

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

Da seguinte forma de importação também acusa erro:

from .codigo.bytebank import Funcionario

Erro:

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

Agora se eu utilizar desta forma, funciona sem erros no console:

from unit_4.mod_1.p2.python_tdd.codigo.bytebank import Funcionario # OK!

Retorno:

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

E uma situação intrigante é que da forma importaçáo abaixo, o python alerta erro no código porém funciona no console.

from codigo.bytebank import Funcionario

Alerta:

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

Retorno console:

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

Então, em resumo ainda fica essa dúvida de qual realmente é a maneira correta e porque o python não está aceitando a importação que ele mesmo sugere.

Márcio, tanto a forma 01 quanto a forma 02 que mostrarei abaixo, é o que chamamos de importações relativas:

from ..codigo.bytebank import Funcionario
from .codigo.bytebank import Funcionario

No geral, usar importações relativas não é considerado uma boa prática. Isso porque fica difícil identificar de onde o arquivo está sendo importado. Embora você saiba exatamente de onde ele vem, qualquer outra pessoa que leia apenas esse trecho do código não terá essa mesma clareza, já que são usados apenas "pontos". Além disso, você mesmo no futuro, pode levar mais tempo para entender de onde exatamente vem a classe.

Por isso, é mais claro utilizar o caminho completo, que é o que chamamos de importação absoluta. Por exemplo:

from unit_4.mod_1.p2.python_tdd.codigo.bytebank import Funcionario

Você pode estar se perguntando: se não é uma boa prática, por que o PyCharm está recomendando?

Isso acontece porque as importações podem se comportar de maneiras diferentes dependendo da configuração e execução do projeto. Assim, o próprio PyCharm pode não entender automaticamente como seu aplicativo será executado, causando problemas de importação.

Qual a regra de ouro?

Prefira importações absolutas. Elas tornam seu código mais legível, mantêm a estrutura do projeto clara para todos e evitam erros de importação. Além disso, uma dica geral é tentar organizar o projeto com o menor número de pastas possível, para evitar problemas com caminhos muito longos.

Abraços!

solução!

Maravilha Nádija, faz todo sentido principalmente em se tratando de um time de devs fica realmente mais legível. Obrigado. Deus abençoe!