我的单元测试从django.test.TestCase扩展。使用SQLite3后端,它们运行良好。

我想用PostgreSQL后端运行它们,测试要做的第一件事是尝试创建测试数据库。这将失败,因为django没有执行此操作的权限。我想配置PostgreSQL/django,以便允许执行此操作,但是我找不到有关如何执行此操作的任何文档。

这些是用于连接到数据库的设置(settings.py):

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydb',
        'USER': 'myuser',
        'PASSWORD': 'myppasss',
        'HOST': 'localhost',
        'PORT': '',
    }
}

当运行django应用程序时,我总是有一个预先创建的数据库和用户,以便django可以连接。

我有两个问题:
  • 在单元测试期间,用于创建数据库的连接设置是什么?我的理解是django用于连接到应用程序数据库的用户不需要(也不应该)具有数据库创建权限。
  • 这在哪里描述?我找到的最接近的是here(TEST配置参数中的DATABASES键),但是这些设置主要是指Oracle数据库,并且用途不同。
  • 最佳答案

    Django将使用the same connection settings as in your settings.py进行测试,但将使用其他数据库(默认情况下为test_mydb,其中常规数据库为mydb)。

    您可以更改django用户权限以在psql shell中创建数据库。有关更多信息,请参见this related answer

    => ALTER USER myuser CREATEDB;
    

    我不知道是否可以限制权限,以便django用户只能创建数据库test_mydb

    10-07 12:34