2011-03-23 104 views
6

我在使django測試正常運行時遇到了一些困難;我使用的是鼻子,我開始收到錯誤正在應用的遷移時進行,即從表1中的外鍵關係表2失敗,錯誤:使用鼻子運行單元測試時發生南錯誤

django.db.utils.DatabaseError: relation "table2_column" does not exist 

望着遷移正在路上應用很明顯,我認爲table1中並沒有之前的外鍵關係應用創建的,所以我試圖找出如何強制依賴,發現下面的文章: http://south.aeracode.org/docs/dependencies.html

然後我說:

depends_on = (
    ("app2", "0001_inital"), 
) 

到我的app1/0001_initial.py文件。

不幸的是,現在,我發現了以下錯誤:

south.exceptions.DependsOnUnknownMigrationMigration 'app1:0001_initial' depends on unknown migration 'app2:0001_inital'. 

如何解決這個任何想法?

+0

不知道如果我能幫助很多,但現在我發現鼻子!我已經知道南方,但因爲我不瞭解鼻子,所以推出了我自己的測試框架。對於南方錯誤,該文件是否存在於/app2/migrations/0001_initial.py? – 2011-03-23 11:09:33

+0

是的,遷移確實存在。 – Simon 2011-03-23 14:48:36

回答

5

你有它的根據遷移的名稱的拼寫錯誤。它應該是:

depends_on = (
    ("app2", "0001_initial"), 
) 

這種依賴系統爲我工作,具有恰好您在此處列出了同樣的問題,然後找到依賴系統南的文檔後。

+0

我實際上沒有測試過這個,因爲我後來解決了這個問題,但是我肯定有一個錯字! – Simon 2011-04-23 17:40:10

19

我不確定這是否能解決您的問題,但您可以在運行測試時添加設置以使用syncdb而不是遷移。以下行添加到您的settings.py

SOUTH_TESTS_MIGRATE = False 
+0

感謝!這幫了一大筆錢。我試圖選擇這個作爲答案,但是真的想知道我是否可以讓遷移工作。 – Simon 2011-03-23 14:50:06

0

,也會引發此錯誤,如果有目標模塊的導入過程中發生錯誤:如果你有手工建造的遷移,而您確定文件名匹配的depends_onneeded_by,檢查引用文件的錯誤。

此外,將SOUTH_TESTS_MIGRATE設置爲False不會解決問題。這只是意味着在嘗試使用遷移之前不會看到問題。

http://south.readthedocs.org/en/latest/settings.html

(如果你想加快你的單元測試這仍然是有用的。)

相關問題