栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用SQLAlchemy设置Flask应用程序进行测试?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用SQLAlchemy设置Flask应用程序进行测试?

您使用环境变量的本能是正确的。但是,存在使用错误的数据库运行单元测试的危险。另外,您可能不想在

connect_db
每个请求中都想使用任何地方
db
。您可以使用配置目录和明确设置的环境变量。这是到目前为止我提出的最好的。

run.pyshell.pyconfig/__init__.pyconfig/test.pyconfig/postgres.py...main/__init__.pymain/someapp/__init__.pymain/someapp/models.py...main/tests/__init__.pymain/tests/testutils.py

因此,配置文件可能是:

# config/test.pySQLALCHEMY_DATAbase_URI = "sqlite://"

# config/postgres.pySQLALCHEMY_DATAbase_URI = 'postgresql://user:pw@localhost/somedb'

因此,我可以在基本TestCase中显式设置数据库:

import osfrom flask.ext.testing import TestCaseos.environ["DIAG_CONFIG_MODULE"] = "config.test"from main import app, dbclass SQLAlchemyTest(TestCase):    def create_app(self):        return app    def setUp(self):        db.create_all()    def tearDown(self):        db.session.remove()        db.drop_all()

然后,

main/__init__.py
对我来说:

import osfrom flask import Flask, render_template, gfrom flask.ext.sqlalchemy import SQLAlchemy# by default, let's use a DB we don't care about# but, we can override if we wantconfig_obj = os.environ.get("DIAG_CONFIG_MODULE", "config.test")app = Flask(__name__)app.config.from_object(config_obj)db = SQLAlchemy(app)@app.before_requestdef before_request():    g.db = db    g.app = app# ...@app.route('/', methods=['GET'])def get():    return render_template('home.html')# ...    from main.someapp.api import mod as someappmodapp.register_blueprint(someappmod)

然后,在其他文件中,我可能会知道要运行什么配置:

# run.pyimport osos.environ["DIAG_CONFIG_MODULE"] = "config.postgres"from main import appapp.run(debug=True)

# shell.pyimport osos.environ["DIAG_CONFIG_MODULE"] = "config.postgres"from main import app, dbfrom main.symdiag.models import *from main.auth.models import *print sorted(k for k in locals().keys() if not k.startswith("_"))import IPythonIPython.embed()

也许到目前为止最好。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626326.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号