[英]Creating a Testing Database Django
我在settings.py中定義了一個mysql數據庫
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'<name>',
'USER':'<user>',
'PASSWORD':'<password>'
}
}
現在,我需要為單元測試創建一個測試數據庫。 我在哪里需要提及測試數據庫的設置,或者根本不需要提及它們?
我做測試時:
python manage.py test my_app
它說:
Creating test database for alias 'default'...
Skipping creation of NoticeTypes as notification app not found
E
======================================================================
ERROR: test_update_quiz (toolbox.tests.TestQuizCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/opt/2.0/site/toolbox/tests.py", line 20, in test_update_quiz
akit = AssignmentKit.objects.get(pk = akit_id)
File "/usr/local/lib/python2.7/site-packages/django/db/models/manager.py", line 131, in get
return self.get_query_set().get(*args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 366, in get
% self.model._meta.object_name)
DoesNotExist: AssignmentKit matching query does not exist.
----------------------------------------------------------------------
Ran 1 test in 0.003s
FAILED (errors=1)
Destroying test database for alias 'default'...
測試給出的錯誤是錯誤的。 因為我的數據庫中確實有該對象,所以我從ORM中進行了檢查。 為什么會出現此錯誤? 我的數據庫沒有正確鏈接嗎?
測試文檔確實解釋了這一點。 您無需為測試創建數據庫,而Django在測試運行時會自動創建。 但是db每次都是從頭開始創建的,因此您的測試本身需要用任何必需的數據填充db:通過固定裝置,或者通過直接在測試中或在setUp方法中創建實體。
單元測試的全部要點是它們是完全獨立的,並且不依賴任何外部狀態:使用現有數據庫將違反該要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.