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

Erro ao executar pytest - ModuleNotFoundError: No module named 'src'

Estou com erro de import no pytest.

Log de Erro:

(venv) mac:departamento leonardo$ pytest
============================================================================= test session starts =============================================================================
platform darwin -- Python 3.7.4, pytest-5.4.1, py-1.8.1, pluggy-0.13.1
rootdir: /Users/leonardo/desenv/python/departamento
collected 0 items / 1 error                                                                                                                                                   

=================================================================================== ERRORS ====================================================================================
_____________________________________________________________________ ERROR collecting test/main_test.py ______________________________________________________________________
ImportError while importing test module '/Users/leonardo/desenv/python/departamento/test/departamento_test.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
test/departamento_test.py:1: in <module>
    from src.model.departamento  import Departamento
E   ModuleNotFoundError: No module named 'src'
=========================================================================== short test summary info ===========================================================================
ERROR test/departamento_test.py
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
============================================================================== 1 error in 0.13s ===============================================================================
(venv) mac:departamento leonardo$ 

Diretório:

src
 --model
    --__init__.py
    --departamento.py
test
 --__init__.py
 --departamento_test.py
__init__.py
main.py

departamento.py

class Departamento():    def __init__(self, codigo, descricao):
        self._codigo = codigo
        self._descricao = descricao

departamento_test.py

from src.model.departamento  import Departamento

def test_departamento():
    departamento = Departamento(1, "Recursos Humanos")
    assert "Recursos Humanos" == departamento._descricao
4 respostas

Oi Léo, tudo bem?

No arquivo departamento_test.py coloque o caminho completo, algo como:

from nome_do_diretorio.src.model.departamento import Departamento

Exemplo:

departamento
    src
        --model
        --__init__.py
        --departamento.py
    test
         --__init__.py
         --departamento_test.py
    __init__.py
    main.py

Ficaria:

from departamento.src.model.departamento import Departamento

E lembre-se de executar o comando pytest na raiz do diretório.

Abraços e bons estudos!

Nádia,

Assim dá outro erro parecido

=================================================================================== ERRORS ====================================================================================
_________________________________________________________________ ERROR collecting test/test_departamento.py __________________________________________________________________
ImportError while importing test module '/Users/leonardo/desenv/python/departamento/test/test_departamento.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
test/test_departamento.py:1: in <module>
    from departamento.src.model.departamento import Departamento
E   ModuleNotFoundError: No module named 'departamento'
=========================================================================== short test summary info ===========================================================================
ERROR test/test_departamento.py
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
============================================================================== 1 error in 0.12s ===============================================================================
solução!

Léo, pelo que testei aqui este erro irá acontecer quando não houver o __init__ na raiz da pasta departamento:

errodepto

Mas, se colocarmos o __init__ na pasta raiz tudo ocorrerá bem:

pytest

Obs: A pasta __pycacahe__ é criada quando executamos o teste.

Deixarei neste link o projeto para que você confira com a estrutura que você tem na sua máquina.

Tente e me retorne se houve sucesso. Caso não, tentaremos outra abordagem.

Nádia, eu excluir e criei novamente o diretório test e funcionou. Fiz um teste: Apaguei o arquivo __init__.py do diretório de test e deu o mesmo erro, voltei o arquivo e funcionou novamente.

Minha conclusão é que estava com algum erro no diretório e não estava reconhecendo o arquivo __init__.py.

Funcionou com este import:

from src.model.departamento import Departamento

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