python docker pytest

python - Obteniendo el error ImportMismatchError mientras se ejecuta py.test



docker pytest (3)

Estoy usando Python 3.6. En mi caso, estaba obteniendo ImportMismatchError en módulos con el mismo nombre bajo diferentes paquetes, por ejemplo, A/B/main.py y C/D/main.py Python 3 no requiere el archivo __init__.py en las carpetas de origen, pero agregar __init__.py en A/B y C/D resolvió el problema.

Cuando estoy ejecutando pruebas localmente, está funcionando bien, pero después de crear la ventana acoplable y ejecutar dentro del contenedor, obtengo un error por debajo.

/usr/local/lib/python3.5/site-packages/_pytest/config.py:325: in _getconftestmodules return self._path2confmods[path] E KeyError: local(''/apis/db/tests'') During handling of the above exception, another exception occurred: /usr/local/lib/python3.5/site-packages/_pytest/config.py:356: in _importconftest return self._conftestpath2mod[conftestpath] E KeyError: local(''/apis/db/tests/conftest.py'') During handling of the above exception, another exception occurred: /usr/local/lib/python3.5/site-packages/_pytest/config.py:362: in _importconftest mod = conftestpath.pyimport() /usr/local/lib/python3.5/site-packages/py/_path/local.py:680: in pyimport raise self.ImportMismatchError(modname, modfile, self) _pytest.config.ConftestImportFailure: ImportMismatchError(''conftest'', ''/projects/my_project/db/tests/conftest.py'', local(''/apis/db/tests/conftest.py''))

/ apis - es el WORKDIR en Dockerfile.


Lo arreglé eliminando todos los paquetes de pycache en prueba / directorio, el problema era cuando estaba creando una imagen de ventana acoplable, seleccionando todos mis archivos de pycache y * .pyc , en el momento en que la prueba se ejecuta utilizando la ruta de mi máquina local en lugar de El camino en contenedor docker.

Conclusión: borre sus archivos * .pyc y pycache antes de crear una imagen de ventana acoplable.

HTH


Puede usar el archivo .dockerignore para excluir que todas __pycache__ carpetas __pycache__ no se envíen al contexto de la imagen de la .dockerignore acoplable:

.dockerignore archivo .dockerignore , excluye __pycache__ carpetas __pycache__ y los *.pyc de todas las subcarpetas / carpetas:

**/__pycache__ **/*.pyc