gpt4 book ai didi

python - 如何测试使用 SQLAlchemy 的 Flask 应用程序?

转载 作者:IT老高 更新时间:2023-10-28 20:32:08 34 4
gpt4 key购买 nike

我有一个使用 SqlAlchemy 在 Flask 上运行的 Web 应用程序,用于审核新闻,它有一些 api 方法来处理审核请求,例如批准、拒绝当前选定的新闻、列出它们等。

我想为此方法编写单元测试,并让它们工作,但我不明白如何在一个数据库 session 中执行我从测试用例中执行的所有请求,以便我可以删除所有更改数据库。还是有其他更清洁或正确的方法来做到这一点?

我发现也许我需要的只是 SqlAlchemy 中的“scoped_session”,但我实现它的所有尝试都失败了。如果这是正确的方法,请告诉我在哪里使用这行代码(在设置中,或在测试用例 set_up 方法中)。

from sqlalchemy.orm import scoped_session
from sqlalchemy.orm import sessionmaker
session_factory = sessionmaker()
Session = scoped_session(session_factory)

最佳答案

我建议您使用 Flask-Testing扩大。这是一个经过批准的扩展,可让您根据需要进行单元测试。它也有专门针对 SQLAlchemy 的部分。

使用 SQLAlchemy 进行测试

如果您将 Flask-Testing 与 SQLAlchemy 一起使用,这将涵盖几个要点。假设您使用的是 Flask-SQLAlchemy 扩展,但如果不是这样,示例应该不会太难适应您自己的特定设置。

首先,确保将数据库 URI 设置为生产数据库以外的其他内容!其次,在每次测试运行时创建和删除表通常是个好主意,以确保干净的测试:"

from flask.ext.testing import TestCase

from myapp import create_app, db

class MyTest(TestCase):

SQLALCHEMY_DATABASE_URI = "sqlite://"
TESTING = True

def create_app(self):

# pass in test configuration
return create_app(self)

def setUp(self):

db.create_all()

def tearDown(self):

db.session.remove()
db.drop_all()

关于python - 如何测试使用 SQLAlchemy 的 Flask 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17791571/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com