如何在Django测试中使用默认数据库

3

现在我想使用我的默认数据库来测试 API,因为我需要太多的数据来模拟请求,所以我不想设置测试数据库。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'bills_db',
        'USER': 'root',
        'PASSWORD': '****',
    }
}

我该如何使用它?

2个回答

6

另一种选择是使用Django的数据库fixture存储所有环境(测试、开发、生产)共有的数据。这里的附加好处是,fixtures使得用共同的数据填充新的数据库变得非常容易:

./manage.py loaddata myfixture1 myfixture2

您可以使用 ./manage.py dumpdata 命令创建 fixtures。例如,以下是如何从名为 books 的应用中的模型 Author 创建 JSON fixtures:
mkdir books/fixtures
./manage.py dumpdata --indent=2 --output books/fixtures/author.json books.author 

然后你可以在测试中使用该装置:

from django.test import TestCase


class AuthorTestCase(TestCase):
    fixtures = ['author']
    ....

2

使用相同的数据库名称作为默认和测试的名称。

Django使用以下模式定义数据库:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'USER': 'mydatabaseuser',
        'NAME': 'mydatabase',
        'TEST': {
            'NAME': 'mytestdatabase',
        },
    },
}

只需使用mydatabase替代mytestdatabase

1
Type 'yes' if you would like to try deleting the test database 'bills_db', or 'no' to cancel: no then return Tests cancelled. - A.Raouf
1
尝试使用 --keepdb 选项来获取您的数据库。 - Serjik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接