我測試了一個不是我自己寫的djang應用程序,它使用兩個燈具:initial_data.json和testing.json。這兩個夾具文件都包含衝突數據(拋出完整性錯誤)。測試時不加載'initial_data.json'燈具
爲了測試,我已經指定了TestCase.fixtures = ['testing.json'],但是initial_data.json也被加載了。
如何避免在測試用例中加載initial_data.json(不重命名它)?
我測試了一個不是我自己寫的djang應用程序,它使用兩個燈具:initial_data.json和testing.json。這兩個夾具文件都包含衝突數據(拋出完整性錯誤)。測試時不加載'initial_data.json'燈具
爲了測試,我已經指定了TestCase.fixtures = ['testing.json'],但是initial_data.json也被加載了。
如何避免在測試用例中加載initial_data.json(不重命名它)?
從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
您可能要考慮一下是否initial_data.json
東西是你的應用程序實際上需要。在運行syncdb
(生產中多久運行一次syncdb
?)後,用./manage.py loaddata production.json
「手動」加載生產數據並不困難,而且這樣可以使加載測試設備變得更容易。
如果你想有一個沒有初始數據表,該代碼將幫助您:
編輯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無需加載初始數據。
等等...所以你正在編寫一個你沒寫的應用程序的測試? – eternicode 2010-11-10 16:16:47