2010-11-10 43 views
14

我測試了一個不是我自己寫的djang應用程序,它使用兩個燈具:initial_data.json和testing.json。這兩個夾具文件都包含衝突數據(拋出完整性錯誤)。測試時不加載'initial_data.json'燈具

爲了測試,我已經指定了TestCase.fixtures = ['testing.json'],但是initial_data.json也被加載了。

如何避免在測試用例中加載initial_data.json(不重命名它)?

+0

等等...所以你正在編寫一個你沒寫的應用程序的測試? – eternicode 2010-11-10 16:16:47

回答

6

從Django的網站報價:

如果你創建了一個名爲 initial_data [XML/YAML/JSON]夾具,該夾具 將每次 運行執行syncdb被加載。這非常方便,但要小心:記住 數據將刷新每 您運行syncdb時。因此,請勿使用 initial_data作爲您要 編輯的數據。

所以我想沒有辦法說「好吧,不要只加載一次初始數據」。也許你可以寫一個簡短的bash腳本來重命名文件。否則,你必須深入研究Django代碼。

此處瞭解詳情:http://docs.djangoproject.com/en/dev/howto/initial-data/#automatically-loading-initial-data-fixtures

2

您可能要考慮一下是否initial_data.json東西是你的應用程序實際上需要。在運行syncdb(生產中多久運行一次syncdb?)後,用./manage.py loaddata production.json「手動」加載生產數據並不困難,而且這樣可以使加載測試設備變得更容易。

2

如果你想有一個沒有初始數據表,該代碼將幫助您:

編輯tests.py:

from django.core import management 

class FooTest(TestCase): 

    @classmethod 
    def setUpClass(cls): 
     management.call_command('flush', interactive=False, load_initial_data=False) 

這將再次刪除你的數據和執行syncdb無需加載初始數據。