不修改导入就无法运行服务器和测试

时间:2019-05-29 07:59:18

标签: python python-unittest bottle nose

我正在用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移到服务和测试模块上方的根文件夹中来修复它。现在工作正常

0 个答案:

没有答案