簡體   English   中英

Django單元測試-配置不正確的錯誤

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

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