Django 并行测试:测试过程错误地访问测试数据库

sun*_*unw 10 python testing django

我有一个在本地运行的 Django 3.0.8 项目,连接到本地 PostgreSQL 数据库 ( postgres:///myapp)。当我运行时python manage.py test,我的单元测试运行良好;一个名为test_myapp自动的测试数据库被创建,并被正确访问。

但是,当我运行时python manage.py test --parallel 8,测试失败。我看到正确生成了 8 个克隆数据库(test_myapp_1, test_myapp_2,..., test_myapp_8),但我收到如下错误:

psycopg2.OperationalError: FATAL:  database "myapp_3" does not exist

Run Code Online (Sandbox Code Playgroud)

似乎对于并行测试,数据库访问不正确(尝试访问数据库myapp_N而不是test_myapp_N)。我试图弄清楚我的本地配置是否有问题,但这就是我在基本配置中的全部内容:

DATABASES = {
    'default': env.db('DATABASE_URL', default='postgres:///myapp'),
}
DATABASES['default']['ATOMIC_REQUESTS'] = True
Run Code Online (Sandbox Code Playgroud)

为什么我的并行测试进程不能正确访问它们各自克隆的测试数据库?

小智 -1

要在 Django 项目上使用 PostgreSQL 数据库,您可以以相同的方式配置数据库。

DATABASES = {
    'default': {
        "ENGINE": "django.db.backends.postgresql_psycopg2",
        "NAME": 'Table_name',
        "USER": 'user_name',
        "PASSWORD": 'password',
        "HOST": 'localhost', # or 127.0.0.1
        "PORT": '5432', #5432 is the default PostgreSQL port if you change it must change this port
    }
}
Run Code Online (Sandbox Code Playgroud)

要在 Django 项目上设置多个数据库,您可以查看此页面并使用它。