2012-12-30 141 views
3

我想要创建集成测试,以便我可以在数据库中创建1000个单一模型的记录。在Django中设置测试数据库

对于我的settings.py文件,我指定在运行测试时使用相同的数据库default

if 'test' in sys.argv or 'test_coverage' in sys.argv: 
    DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 
      'NAME': 'TableName',      # Or path to database file if using sqlite3. 
      'USER': 'postgres',      # Not used with sqlite3. 
      'PASSWORD': 'password',     # Not used with sqlite3. 
      'HOST': 'localhost',      # Set to empty string for localhost. Not used with sqlite3. 
      'PORT': '5432',      # Set to empty string for default. Not used with sqlite3. 
     } 
    } 

当我运行命令python manage.py test <app>我得到一个错误,说明我有跑两会。

Got an error creating the test database: source database "template1" is being accessed by other users 
DETAIL: There are 1 other session(s) using the database. 

回答

3

请确保python manage.py runserver或访问你的PostgreSQL(如pgadmin3或phpPgAdmin的)任何其他进程正在运行测试之前禁用。

换句话说,确保您已经为您的应用程序终止了正在运行的postgresql连接。

您也可以决定哪些应用程序正在通过

psql -U postgres 

postgres=# SELECT * FROM pg_stat_activity; 

使你的PostgreSQL数据库的开放式连接,如果你想成为具体的,你可以这样做: -

postgres=# SELECT * FROM pg_stat_activity where datname = 'TaleeboBixin'; 
+0

的数据库测试被创建和销毁,如果我创建记录,这是否意味着当测试完成时它们将被删除? – Warz

+0

是的,这是正确的。将为您创建一个名为'test_TaleeboBixin'的新数据库(因为您的实际数据库名为'TaleeboBixin')。并且这个数据库将在测试运行完成时被删除。 –

+0

我真的想创建不会消失的模型的测试,如果测试dB消失,我有什么选择呢? – Warz

相关问题