[英]Django unittest read-only test databases
我必須在這里忽略這一點。 我正在使用django 1.5.x並正在創建基於djangos TestCase類的單元測試。 我在設置中定義了一堆數據庫,因為我從很多不同的源中提取(只讀)。 運行測試時我只想創建我的默認數據庫的測試版本,其余我想要標記為只讀而不嘗試重新創建為test_db_name(用戶定義的不會(不能)擁有創建這些權限的權限無論如何dbs)。
當然這是可能的 - 正如我所說,我必須錯過顯而易見的事情?
感謝任何幫助。
馬修
不明顯,不。 記錄的排序 ,您可以設置要在測試時使用的數據庫名稱:
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.spatialite',
'NAME': 'db.sqlite3',
'TEST_NAME': '/tmp/test.sqlite3',
},
}
如果您不想構建(或重建)測試數據庫,則需要將數據庫名稱復制到TEST_NAME 並使用新的python manage.py test
--keepdb
命令使數據庫保持原樣,而不是讓Django嘗試在運行之間刪除它。 截至2014年6月,您必須升級到Django的開發版才能訪問它; 最終這將是穩定發布。 這方面的缺點是,據我所知,它適用於所有數據庫,而不僅僅是您的只讀數據庫。
我有同樣的問題,設法解決這個問題:
settings.py
DATABASES = {
'default': {...},
'other': {...}
}
DATABASE_ROUTERS = ['routers.MyRouter']
...
TESTING = 'test' in sys.argv
if TESTING:
DATABASE_ROUTERS = []
DATABASES.pop('other')
如果您不使用硬編碼數據庫路由,例如使用'using'並且只使用'DATABASE_ROUTERS',那么此解決方案應該足夠好了。
當然,如果您想要實際測試與遠程數據庫的連接以及存儲在那里的數據,那么這將不是可行的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.