【发布时间】:2016-02-08 18:04:18
【问题描述】:
我正在使用Flask-Script 在我的应用程序上运行测试,我的manage.py 文件的重要部分如下所示:
import unittest
from flask.ext.script import Manager
from project import app
manager = Manager(app)
@manager.command
def test():
"""Run unit tests."""
app.config.from_object('config.Test')
tests = unittest.TestLoader().discover('tests', pattern='*.py')
unittest.TextTestRunner(verbosity=1).run(tests)
但是当我运行 python manage.py test 时,它会尝试初始化整个应用程序,因此,例如,如果我没有设置环境变量,它会从我的项目的 __init__.py 文件中抛出一个 KeyError,如下所示:
File "project/__init__.py", line 19, in <module>
app.config.from_object(os.environ['PROJECT_SETTINGS'])
或者如果我设置了环境变量,我会收到关于缺少数据库表的错误。
当然,只有在测试运行并且在 test() 函数中设置了配置变量后,应用才应该初始化。
【问题讨论】:
-
您在模块顶部导入
app。当您这样做时,project/__init__.py中的任何内容都会运行。 -
谢谢@dim。问题是
Manager需要它,所以我不知道如何解决这个问题。
标签: python flask python-unittest flask-script