簡體   English   中英

Django unittest只讀測試數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM