Django Q + psycopg2cffi 单元测试踩坑记

· 40字 · 1分钟

可能是出于防止连接丢失的原因,Django Q 项目在 cluster.py 文件中大量应用了 db.close_old_connections(),关闭并重新打开数据库连接。而在 Django 自带的单元测试 django.test.TestCase 中,是采用了数据库事务进行测试数据回滚,以实现测试之间互相隔离的目的;在此时关闭数据库连接,就会使得事务中断,抛出异常——在 psycopg2 中,会说 InterfaceError("connection already closed"),而在 psycopg2cffi 中,会说 TransactionManagementError("An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block

之前查到几个说法,关于 TestCase 改成 TransactionTestCase 之类的,并没有用。

comments powered by Disqus