Database 如何在Flask应用程序中使用pytest清除/拆除db
我知道这看起来像是重复,我在这个话题上也发现了类似的问题,但没有一个对我有效。我只需要在每次测试后清除(或拆卸)数据库,这样每次测试都会使用一个新的空数据库 我正在使用fixture,我的代码如下所示:Database 如何在Flask应用程序中使用pytest清除/拆除db,database,flask,pytest,Database,Flask,Pytest,我知道这看起来像是重复,我在这个话题上也发现了类似的问题,但没有一个对我有效。我只需要在每次测试后清除(或拆卸)数据库,这样每次测试都会使用一个新的空数据库 我正在使用fixture,我的代码如下所示: @pytest.fixture(scope="module", autouse=True) def test_client_db(): # set up app.config["SQLALCHEMY_DATABASE_URI"] = &q
@pytest.fixture(scope="module", autouse=True)
def test_client_db():
# set up
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///"
with app.app_context():
db.init_app(app)
db.create_all()
testing_client = app.test_client()
ctx = app.app_context()
ctx.push()
# do the testing
yield testing_client
# tear down
with app.app_context():
db.session.remove()
db.drop_all()
ctx.pop()
我是pytest的新手,从我所学到的,在屈服之前的任何东西都是一种“设置”,在屈服之后的任何东西都是“拆卸”。然而,当我运行几个测试时,每个测试的数据库并不清晰,它在它们之间保存数据
为什么会这样?这个固定装置怎么了?我遗漏了什么?您已将范围设置为
模块
-这意味着只有在模块中的所有测试运行后,才会重置夹具
将范围设置为function
或完全保留,因为function
是默认值
请参见您有一个模块级夹具,这意味着在每个测试模块中只执行一次拆卸。如果你想在每次测试后使用函数作用域(如果你没有设置作用域,这是默认值)。哦,谢谢。它起作用了!