【发布时间】:2020-05-27 23:33:27
【问题描述】:
我正在使用 SqlAlchemy before_flush 事件来验证对象,然后再将它们保存到数据库中,如下所示:
from models import db
@event.listens_for(db.session, 'before_flush')
def validateSomething(session, flush_context, instances):
pass
我真的很想测试我在那里所做的事情。但是,在我的测试中——我正在使用 pytest——使用夹具为每个测试创建一个新会话。它类似于这个设置:http://alexmic.net/flask-sqlalchemy-pytest/ 一个函数范围的夹具在会话旁边创建一个事务,并在拆卸期间回滚/删除它们。
由于事件是在models.db 的(范围)会话上注册的,因此不会为测试中使用的会话事件触发。有没有办法解决这个问题,所以在测试期间会触发事件?
【问题讨论】:
标签: python flask sqlalchemy pytest