我正在为我的 Flask 应用程序编写一个使用 Flask-SQLAlchemy 的测试。在 中models.py,我使用了db = SQLAlchemy(),并编写了一个函数来使用应用程序对其进行配置。但是当我运行测试时,我收到错误“RuntimeError:“SQLAlchemy”实例已在此 Flask 应用程序上注册”。我不确定测试文件在哪里创建 SQLAlchemy 的新实例。
# flaskr.py
from flask import Flask
from models import setup_db
def create_app(test_config=None):
app = Flask(__name__)
setup_db(app)
return app
Run Code Online (Sandbox Code Playgroud)
# models.py
from flask_sqlalchemy import SQLAlchemy
database_path = "postgresql://student:student@localhost/bookshelf"
db = SQLAlchemy()
def setup_db(app, database_path=database_path):
app.config["SQLALCHEMY_DATABASE_URI"] = database_path
db.init_app(app)
with app.app_context():
db.create_all()
Run Code Online (Sandbox Code Playgroud)
# test_flaskr.py
import unittest
from flaskr import create_app
from models import setup_db
class BookTestCase(unittest.TestCase):
def setUp(self):
self.app = create_app()
self.client = self.app.test_client()
setup_db(self.app, "postgresql://student:student@localhost/bookshelf_test") …Run Code Online (Sandbox Code Playgroud)