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