我正在用Bottle框架建立一个网站。我正在使用鼻子测试进行单元测试。但是,有一个我自己无法解决的问题。
我似乎找不到能够允许我在不中断服务器的情况下运行测试的方法。运行测试时,必须进行相对导入才能使它们正常工作,但是在启动服务器时它们将不起作用。
这是我的文件夹结构:
├── service
│ ├── __init__.py
│ ├── application.py
│ ├── main.py
│ ├── response_header.py
│ ├── global_data_loader.py
│ ├── renderer
│ │ ├── __init__.py
│ │ ├── header.py
│ │ ├── ....
│ ├── tests
│ │ ├── test_application.py
│ │ ├── ....
这是我如何导入以便服务器可以工作的方式:
application.py --
from response_header import ResponseHeader
from global_data_loader import GlobalDataLoader
from renderer import Application
但是,当我进行鼻子测试时,会收到以下消息:
ModuleNotFoundError: No module named 'response_header'
因此,当我想进行鼻塞测试时,我必须将导入内容更改为如下形式:
application.py --
from .response_header import ResponseHeader
from .global_data_loader import GlobalDataLoader
from .renderer import Application
然后我的鼻子测试工作了,但是当我想启动服务器时,我收到以下消息:
from .response_header import ResponseHeader
ImportError: attempted relative import with no known parent package
我已经在测试中尝试使用sys.path.append,它可以工作,但是我需要一个不涉及PYTHONPATH或不使用os / sys的解决方案
编辑:我通过将我用来启动服务器的main.py移到服务和测试模块上方的根文件夹中来修复它。现在工作正常