2014-09-27 121 views
2

我正在运行Django==1.7psycopg2==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数据库设置,作为同一用户运行并且测试运行良好。

任何想法可以阻止测试运行?

+1

通过消除过程,我确定这与['djorm-ext-pool'](https://github.com/djangonauts/djorm-ext-pool)应用程序有关。当我从'INSTALLED_APPS'中删除'djorm_pool'时,我不会再出错。 – dgel 2014-09-27 16:47:58

+0

这是适合自我回答,做得好的工作。它一定是建立一个交易太早。 – 2014-09-28 01:26:12

回答

0

这是由我的项目造成的,包括djorm-ext-pool应用程序。从INSTALLED_APPS中删除djorm_pool可解决问题。

应用程序必须在django测试运行器创建测试数据库之前启动事务。

相关问题