[英]Django unittests - ImproperlyConfigured error
我正在嘗試為我的模塊編寫測試。 當我跑步時:
python manage.py test my_module
我收到消息:
django.core.exceptions.ImproperlyConfigured: Please fill out the database NAME in the settings module before using the database.
我還沒有任何測試,只有BaseTest,我可以在其中創建用戶,組和分配權限。
問題可能出在哪里? 服務器正常工作,配置似乎很好。 我需要定義測試設置嗎?
好。 我想我知道問題出在什么地方:]我在其他模塊中存儲了具有權限的列表。 所以我寫from module.perms import perms
(正常的python列表)。 看起來,python所做的不只是將列表從其他模塊導入到我的模塊中。 這就是失敗的原因。
解決方案:列表定義后的環繞代碼:
if __name__ == "__main__":
...
然后,一切都應該運轉良好。
好。 我想我知道問題出在什么地方:]我在其他模塊中存儲了具有權限的列表。 所以我寫從module.perms導入perms(正常的python列表)。 看起來,python所做的不只是將列表從其他模塊導入到我的模塊中。 這就是失敗的原因。
解決方案:列表定義后的環繞代碼:
if __name__ == "__main__":
...
然后,一切都應該運轉良好。
您需要在settings.py中設置數據庫設置,並且您的應用程序必須位於已安裝的應用程序中。 例如:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'database.sqlite',
python manage.py test
不使用settings.py DATABASES
定義的NAME
數據庫。 從文檔 -
需要數據庫的測試(即模型測試)將不會使用“實際”(生產)數據庫。 將為測試創建單獨的空白數據庫。
無論測試是通過還是失敗,都將在執行所有測試后破壞測試數據庫。
默認情況下,測試數據庫通過在test_前面加上DATABASES中定義的數據庫的NAME設置的值來獲取其名稱。 使用SQLite數據庫引擎時,默認情況下,測試將使用內存數據庫(即,數據庫將在內存中創建,完全繞開文件系統!)。 如果要使用其他數據庫名稱,請在字典中為DATABASES中的任何給定數據庫指定TEST_NAME。
回答您的問題。 您可以使用TEST_NAME
設置定義測試數據庫。 但是您不必。
對於通過搜索找到此內容的人們來說,這是另一種潛在的解決方案:
我試圖在設置文件中定義自己的TestRunner
類,這意味着它必須導入DjangoTestSuiteRunner
。 該文件頂部的導入導致了ImproperlyConfigured
錯誤。 將自定義TestRunner類移動到單獨的文件可解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.