2012-10-10 47 views
1

我對新的Django代碼運行測試。我有以下型號:Django模型在單元測試中失敗,但不在shell中

class Places(models.Model): 
    name = models.CharField(max_length=20) 
    street = models.CharField(max_length=50) 
    number = models.IntegerField() 
    confirmed = models.BooleanField() 
    notes = models.TextField() 

    def __unicode__(self): 
     return self.address 

    class Meta: 
     db_table = "Places" # to prevent the prefixes from being added on 

當我這樣做的manage.py殼我得到正確的響應:

from my_app.models import Places 

Places.objects.get(name='home').confirmed 

>>> True 

當在我的應用程序一個單元測試下進行的相同的代碼( manage.py測試MYAPP)我得到的錯誤:

Places matching query does not exist django 

當我與PDB嘗試我發現,Django是讀取數據庫爲空(空集),而不是存儲任何數據。

我也在代碼中嘗試過RAW SQL,但也失敗了,但是在shell中工作。

我檢查了數據庫在SQL本身和數據存在。我執行了等效的SQL代碼,它也返回True。

這是在Django中的錯誤?

+0

please,打印結果'Places.objects.filter(name ='home')。count()' – defuz

+0

這是0。 RAW SQL沒有顯示任何內容,這一定是django「看到」數據庫和其中的信息的問題 –

回答

4

單元測試總是針對新的空數據庫執行。您是否在測試的設置步驟中創建了數據,還是提供了數據夾具?

+0

我只是想到了這一點,因爲你在哪裏打字......是的:) –