【发布时间】:2016-02-24 04:59:38
【问题描述】:
关于堆栈溢出有几个类似的问题,如果我通过询问另一个问题来破坏礼节,我提前道歉,但我似乎无法想出正确的咒语来完成这项工作。
我正在尝试使用 Flask + Flask-SQLAlchemy,然后使用 pytest 来管理会话,这样当函数范围的 pytest 固定装置被拆除时,当前的事务就会回滚。
其他一些问题似乎提倡在函数范围内使用 db “drop all and create all” pytest 固定装置,但我正在尝试使用加入的会话并使用回滚,因为我有很多测试.这将大大加快速度。
http://alexmic.net/flask-sqlalchemy-pytest/ 是我找到原始想法的地方,Isolating py.test DB sessions in Flask-SQLAlchemy 是建议使用函数级数据库重新创建的问题之一。
我也见过 https://github.com/mitsuhiko/flask-sqlalchemy/pull/249 ,但它似乎已与 flask-sqlalchemy 2.1(我正在使用)一起发布。
我当前的(非常小,希望可以立即理解)回购在这里: https://github.com/hoopes/flask-pytest-example
有两个打印语句 - 第一个(在 example/__init__.py 中)应该有一个 Account 对象,第二个(在 test/conftest.py 中)是我希望在事务完成后清除数据库的地方回滚。
如果您在测试目录中pip install -r requirements.txt 并运行py.test -s,您应该会看到两条打印语句。
我快走到尽头了 - 一定有什么我错过了,但就我的一生而言,我似乎无法找到它。
帮帮我,所以,你是我唯一的希望!
【问题讨论】: