2013-07-16 26 views
2

標題不清楚,我知道。
我想單元測試我的應用程序,所以我寫了一個我想執行的測試。我公司推出python manage.py test但沒有在DB的錯誤:Django測試不能初始化分貝,但我可以

The error was: ERREUR: the relation « me_auth_emailuser » doesn't exists 

Error in migration: authtoken:0001_initial 
DatabaseError: ERREUR: the relation « me_auth_emailuser » doesn't exists 

(譯自法語)
該表已使用向南遷移。對於我的申請,我只是用:

python manage.py syncdb 
python manage.py migrate me_auth 
python manage.py migrate 

我不明白是怎麼回事,因爲這些命令我沒有得到任何錯誤...有人可以幫我嗎? :)

回答

2

大概在某個時候你有一個關係me_auth_email_user,你不再有。我想,如果你要創建一個新的數據庫,並運行你會得到同樣的錯誤:

python manage.py syncdb 
python manage.py migrate 

有兩個解決辦法:

  1. 不要在單元測試中使用南(如果您正在測試,請將其從INSTALLED_APPS中刪除,如下所示,或者在settings.py中設置SOUTH_TESTS_MIGRATE = False)。
  2. 手動修復損壞的遷移。

一個快速哈克的方式在測試過程中,除去南方是有這樣的事情在你的settings.py,下面您的正常INSTALLED_APPS設置爲:

import sys 

if 'test' in sys.argv: 
    INSTALLED_APPS = [app for app in INSTALLED_APPS if app != 'south'] 

在一般情況下,測試遷移是一件好事 - 你應該總是能夠創建一個新的數據庫並運行migrate - 所以我強烈建議考慮選項(2)。