Flask
套件。为了使自己开始,我遵循了几个教程,特别是this
,this,this
和this。现在,大约5小时后,我被以下信息完全击败:
RuntimeError: The current Flask app is not registered with this 'SQLAlchemy' instance. Did you forget to call 'init_app', or did you create multiple 'SQLAlchemy' instances?
在这里我所做的。我创建了一个带有以下内容的文件:
tests/conftest.py
,然后我创建了一个名为import pytest
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
class Config:
SQLALCHEMY_DATABASE_URI = "sqlite:///:memory:"
TESTING = True
@pytest.fixture(scope="session")
def app(config_class=Config):
app = Flask(__name__)
app.config.from_object(config_class)
db = SQLAlchemy()
db.init_app(app)
with app.app_context():
db.create_all()
yield app
db.session.close()
db.drop_all()
:的测试文件
tests/test_db.py
我尝试了大约573个变化,没有和不使用from app.models import User
def test_init(app):
with app.app_context():
id = "0"
user_query = User.query.filter_by(id=id).first()
,将数据库init转移到单独的固定装置,使用app_context
,创建客户端,
pytest-flask-sqlalchemy
等。无论我做什么,我要么得到app_context().push()
消息或The current Flask app is not registered
。为了良好的措施,我要求chatgpt提供一个工作解决方案,然后重复几次请求,以尝试其每个同样无功能的解决方案。但这是可以预料的...谁能给我一个实际的示例,说明如何将pytest与烧瓶和sqlalchemy一起使用?
也许您可以如何设置测试客户端。乍一看,它看起来还不错。我做了类似的事情,但使用了Postgres数据库进行测试。
A 'SQLAlchemy' instance has already been registered on this Flask app. Import and use that instance instead
this设置应该有效。 您可以检查我过去还编写测试的宠物项目(repo)。这是我在烧瓶上写的第一个项目之一,所以我会做不同的事情。