我正在尝试通过我的 docker 容器运行我的测试用例。我的应用程序运行良好。所以我的用于 web 和 web_db 的 docker 容器可以工作。
/> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
20466fad870e fastapi_tdd_docker_web-db "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp fastapi_tdd_docker_web-db_1
5195473076db fastapi_tdd_docker_web "/usr/src/app/entryp…" 4 minutes ago Up 4 minutes 0.0.0.0:8004->8000/tcp, :::8004->8000/tcp fastapi_tdd_docker_web_1
但是,当我尝试运行简单的 ping 测试时,conftest.py 无法解析主应用程序的 main.py?我收到此错误:
/> docker-compose exec web python -m pytest
ImportError while loading conftest '/usr/src/app/tests/conftest.py'.
tests/conftest.py:9: in <module>
from app import main
E ImportError: cannot import name 'main' from 'app' (/usr/src/app/__init__.py)
我的树看起来像这样:
tree
.
├── aerich.ini
├── app
│ ├── config.py
│ ├── db.py
│ ├── __init__.py
│ ├── main2.py
│ ├── main.py
│ ├── models
│ │ ├── __init__.py
│ │ └── tortoise.py
│ └── __pycache__
│ ├── config.cpython-37.pyc
│ ├── __init__.cpython-37.pyc
│ ├── main2.cpython-37.pyc
│ └── main.cpython-37.pyc
├── db
│ ├── create.sql
│ └── Dockerfile
├── Dockerfile
├── entrypoint.sh
├── __init__.py
├── migrations
│ └── models
│ └── 0_20210801184928_init.sql
├── __pycache__
│ └── __init__.cpython-37.pyc
├── requirements.txt
├── tests
│ ├── conftest.py
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── conftest.cpython-37-pytest-6.2.4.pyc
│ │ ├── __init__.cpython-37.pyc
│ │ ├── test_first.cpython-37-pytest-6.2.4.pyc
│ │ └── test_ping.cpython-37-pytest-6.2.4.pyc
│ ├── test_first.py
│ └── test_ping.py
└── text.txt
有人遇到过这个问题吗? 由于这是课程代码的精确副本,我很困惑为什么它无法解析模块名称空间?