无法测试django 1.7应用程序
问题描述:
我正在运行Django==1.7
与psycopg2==2.5.4
,我无法运行任何测试。无法测试django 1.7应用程序
当我试图(通过运行./manage test <app>
)来运行我的任何Django的测试用例,我得到以下错误:
Creating test database for alias 'default'...
Got an error creating the test database: CREATE DATABASE cannot run inside a transaction block
...
Destroying old test database 'default'...
Got an error recreating the test database: current transaction is aborted, commands ignored until end of transaction block
我的数据库设置都非常简单:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
}
}
用户我正在使用(系统是Ubuntu 14.04)具有完整的postgres管理员权限,我可以成功地手动创建/删除数据库:
(env)[email protected]:~$ createdb test_mydb
(env)[email protected]:~$ dropdb test_mydb
(env)[email protected]:~$
我的模型迁移似乎很好 - 我可以删除数据库,成功运行迁移和我的Web应用程序功能很好 - 我只是不能运行测试。
我在同一台机器上有另一个django 1.7项目,使用相同的基本postgres数据库设置,作为同一用户运行并且测试运行良好。
任何想法可以阻止测试运行?
答
这是由我的项目造成的,包括djorm-ext-pool应用程序。从INSTALLED_APPS中删除djorm_pool
可解决问题。
应用程序必须在django测试运行器创建测试数据库之前启动事务。
通过消除过程,我确定这与['djorm-ext-pool'](https://github.com/djangonauts/djorm-ext-pool)应用程序有关。当我从'INSTALLED_APPS'中删除'djorm_pool'时,我不会再出错。 – dgel 2014-09-27 16:47:58
这是适合自我回答,做得好的工作。它一定是建立一个交易太早。 – 2014-09-28 01:26:12