在Django中,多个数据库不应该通过manage.py在1个特定数据库上创建测试数据库

时间:2014-08-12 18:43:32

标签: django unit-testing manage.py

在Django中,我使用多个数据库,但通过测试功能,如果运行manage.py test **,则多个数据库的数据库不应创建测试数据库。我该如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

在你的settings.py中,你可以告诉Django在测试时使用什么数据库。如果您想使用SQLite,请执行此操作的代码如下:

settings.py:

if 'test' in sys.argv:
    DATABASES['default'] = {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'tests.db',
    }
每次运行Django时,

manage.py test都会创建一个新数据库,因此您需要在test.py文件中使用 fixtures 来预加载数据库运行测试前的数据(如果需要预加载数据)。

例如,要为User model生成灯具,请使用以下代码:

python manage.py dumpdata auth.User --indent=2 > app_name/fixtures/admin.json

要使用fixtures,您可以按照以下方式构建tests.py

tests.py:

from django.test import TestCase

class MyTests(TestCase):
    fixtures = [admin.json]

    def setUp(self):
        # other setup code here

    def test_the_obvious(self):
        assert True == True