2012-12-30 200 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

相關問題