8

我正在使用带有 Flask 的 SQLAlchemy,如下所示:http: //flask.pocoo.org/docs/patterns/sqlalchemy/

我有一个 Selenium 测试套件,它首先在 Firefox 上运行,然后在 Chrome 上运行。

在每个浏览器上开始测试之前,会删除并创建测试数据库 (PostgreSQL) 中的表。

它在第一个浏览器上运行完美,但对于第二个浏览器,SQL 创建/删除尝试只是冻结并且没有显示错误。

我相信这是因为开放的 SQLAlchemy 会话,对吗?

4

2 回答 2

3

我相信这是因为开放的 SQLAlchemy 会话,对吗?

最有可能的情况就是这样。要确认它,请连接到postgres数据库并运行SELECT * FROM pg_stat_activity

我不确定您如何处理数据库创建/删除,但您可能希望调用dispose()SQLAlchemyrecreate()连接池,并确保已返回任何签出连接(例如,使用session.close())。

于 2012-12-20T16:37:30.243 回答
0

这也是我在使用 SQLAlchemy 和 Postgres 运行 Flask unittest 时发生的事情。很多时候,罪魁祸首是一个例外,没有向上传播而被卡住。此异常还会阻止测试正确清理并因此冻结。

如果您正在创建一个测试套件,然后调用套件上的调试方法,它将显示异常。在此处链接此方法的文档。

您对打开的 Sqlalchemy 会话的观察也可能是一个原因。明天我将根据这个观察来检验我的理论。如果它消除了一些疑问,那么我会在这里发布。

查看此答案,该答案显示了如何在异常时触发调试器。也许它可以帮助查明问题。

于 2012-12-20T19:17:27.360 回答