2012-08-08 75 views
2

我有Django 1.4。在我的test.py,我已經得到了必要的TestCase進口:Django忽略我的TestCase燈具

from django.test import TestCase 

來隔離問題,我已經添加了一行:

fixtures = ['westeros'] 

到默認實例的測試案例,即

class SimpleTest(TestCase): 
    fixtures = ['westeros'] 

    def test_basic_addition(self): 
     """ 
     Tests that 1 + 1 always equals 2. 
     """ 
     self.assertEqual(1 + 1, 2) 

使用django-admin.py dumpdata,我在客戶/ fixtures目錄中,這裏的「客戶」是在settings.INSTALLED_APPS中列出的應用程序創建一個名爲「維斯特洛」的固定文件。

當我運行測試時,在任何詳細程度上,Django只是忽略夾具並通過test_basic_addition測試。沒有錯誤,沒有夾具加載。就好像TestCase導入不在那裏一樣。任何想法可能是錯誤的或如何調試?

+0

你用loaddata試過了嗎? https://docs.djangoproject.com/zh/dev/ref/django-admin/#django-admin-loaddata – danihp 2012-08-08 19:24:27

回答

2

這是確定定義時fixtures爲你所做的一切,即

fixtures = ['westeros'] 

然而,夾具文件本身必須有對應於其串行如westeros.jsonwesteros.json.zipwesteros.xml的JSON擴展省略擴展名,壓縮json或xml分別。

+0

是的!!!謝謝。這是問題所在。它在我將westeros重命名爲westeros.json時起作用。爲什麼Django在這個問題上完全保持沉默,我仍然很困惑。即使夾具現在正在裝載,它仍然沒有說什麼,即使在冗長3。 – Ghopper21 2012-08-08 22:43:50

1

您的westeros文件位於哪裏?

它需要或者是在fixtures目錄中的應用程序內或在FIXTURE_DIRSsettings.py文件

您可以測試運行與verbosity=2得到充分的輸出指定的目錄。 https://docs.djangoproject.com/en/1.0/ref/django-admin/#test

您的燈具文件是否被命名爲westeros?還是它有一個文件擴展名?

正如你所看到的,Django將在燈具負載上無聲無息地失敗。 (至少直到1.3,我還沒有在新的1.4版本中使用燈具)。但是你實際上並沒有測試燈具是否加載。 拋出self.assertGreater(YourModel.objects.all(), 0)或某些信號來驗證沒有對象,或放入一個debbuger並開始查詢某些模型。

+0

謝謝。回答:(1)「westeros」文件位於customers/fixtures目錄中,其中customers是我安裝的應用程序之一; (2)我運行了冗長的2(和3); (3)是的,我已經證實夾具沒有被加載(只是沒有顯示在我的問題)。 – Ghopper21 2012-08-08 22:16:52