簡體   English   中英

創建測試數據庫Django

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

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