我遇到了在单元测试模式下执行Flask应用程序的问题。出于某种原因,同一个模块被导入两次(当我将它作为开发服务器运行时,烧瓶应用程序中似乎不是问题)。结构是这样的:
-- app
|
--blueprint
|-- __init__.py : import foo; from .bar import aaa
|-- foo.py : # some sqlalchemy model setup, etc
|
|-- bar
| | -- __init__.py : from bar import bbb
| -- bar.py : from app.foo import ccc
问题在bar.py
中,使用函数foo.py:ccc
运行sqlalchemy模型定义两次(由于元数据已经注册了模型,因此失败)。如何避免这种冲突?如果我将烧瓶应用程序作为单元测试运行,我也会惊讶地发现为什么不会发生这种情况。