2
respostas

..\src\leilao\dominio.py:11: AttributeError

Olá.

Mais alguém está com esse problema?

O ambiente que estou executando é:

  • SO_Win10

  • IDE_Pycharm

Venv_Python
(venv_alura) D:\virtualenvs\Aulas_Alura\testes_python_projeto_inicial>
Pasta da Venv:
D:\virtualenvs\venv_alura
Pasta do Projeto:
D:\virtualenvs\Aulas_Alura\testes_python_projeto_inicial\

Ao executar os testes, recebo essa mensagem:

  • Já revisei o meu código várias vezes.

  • Tentei rodar o código utilizado na aula no Git (apresenta o mesmo erro)

Desde já, muito obrigado.

============================= test session starts =============================
collecting ... collected 1 item

test_usuario.py::test_deve_subtrair_valor_da_carteira_do_usuario_quando_esse_propor_um_lance FAILED [100%]
test_usuario.py:16 (test_deve_subtrair_valor_da_carteira_do_usuario_quando_esse_propor_um_lance)
gu = <src.leilao.dominio.Usuario object at 0x00000163BF049A58>
leilao = <src.leilao.dominio.Leilao object at 0x00000163BF049A90>

    def test_deve_subtrair_valor_da_carteira_do_usuario_quando_esse_propor_um_lance(gu, leilao):
>       gu.propoe_lance(leilao, 50.0)

test_usuario.py:18: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <src.leilao.dominio.Usuario object at 0x00000163BF049A58>
leilao = <src.leilao.dominio.Leilao object at 0x00000163BF049A90>, valor = 50.0

    def propoe_lance(self, leilao, valor):
>       if self._valor_valido(valor):
E       AttributeError: 'Usuario' object has no attribute '_valor_valido'

..\src\leilao\dominio.py:11: AttributeError


============================== 1 failed in 0.06s ==============================

Process finished with exit code 1
2 respostas

E essa mensagem aparece ao executar o pytest no terminal Git Bash. Nas pasta /d/virtualenvs/Aulas_Alura/testes_python_projeto_inicial/tests

$ pytest
============================= test session starts =============================
platform win32 -- Python 3.7.3, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: D:\virtualenvs\Aulas_Alura\testes_python_projeto_inicial\tests
collected 0 items / 2 errors

=================================== ERRORS ====================================
______________________ ERROR collecting test_dominio.py _______________________
ImportError while importing test module 'D:\virtualenvs\Aulas_Alura\testes_python_projeto_inicial\tests\test_dominio.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
c:\users\gusta\appdata\local\programs\python\python37\lib\importlib\__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test_dominio.py:2: in <module>
    from src.leilao.dominio import Usuario, Lance, Leilao
E   ModuleNotFoundError: No module named 'src'
______________________ ERROR collecting test_usuario.py _______________________
ImportError while importing test module 'D:\virtualenvs\Aulas_Alura\testes_python_projeto_inicial\tests\test_usuario.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
c:\users\gusta\appdata\local\programs\python\python37\lib\importlib\__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test_usuario.py:3: in <module>
    from src.leilao.dominio import Usuario, Leilao
E   ModuleNotFoundError: No module named 'src'
=========================== short test summary info ===========================
ERROR test_dominio.py
ERROR test_usuario.py
!!!!!!!!!!!!!!!!!!! Interrupted: 2 errors during collection !!!!!!!!!!!!!!!!!!!
============================== 2 errors in 0.32s ==============================

Olá Luiz, tudo bem com você?

Peço desculpas pela demora em lhe responder.

O primeiro erro apresentado é um erro de atributo (AttributeError) ele é apresentado quando tentamos fazer o uso de um atributo ou um método que um objeto não possui, nesse caso está sendo realizado a tentativa de uso do método _valor_valido.

Deixo abaixo alguns pontos que podem levar a apresentação desse erro, peço que verifique os pontos apresentados:

  • Confira no método propoe_lance da classe Usuario se a seguinte linha if self._valor_valido(valor) está fazendo referência a um método existente.
  • Verifique se na classe Usuario foi feita a declaração do método _valor_valido.
  • Verifique se o nome do método está correto, podendo ser _valor_e_valido.

Os dois erros seguintes, são erros de módulos não encontrados (ModuleNotFoundError). Uma alternativa que podemos estar abordando é transformar as pastas src e leilao em uma pasta do tipo pacote de módulos do Python.

Para converter uma pasta para o tipo pacote de módulo, basta adicionar um arquivo Python de nome __init__.py dentro das pastas src e leilao, o arquivo pode ser um arquivo sem linhas de código.

Após realizar as mudanças propostas acima, caso os erros persistam, peço que envie o código completo dos arquivos test_leilao.py, test_usuario.py e dominio.py, para que possam ser realizados os testes com os códigos.

Peço também que envie uma print da tela completa no momento do erro.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software