Django 单元测试故障转移域套接字

Django Unit tests fail over domain socket

我将 Django 配置为通过本地 Unix 域套接字使用具有对等身份验证的数据库,而不是 user/password 身份验证。 这是 settings.DATABASES:

{'default': {'ENGINE': 'django.db.backends.postgresql',
             'NAME': 'mcps',
             'PORT': 5433,
             'TEST': {'ENGINE': 'django.db.backends.postgresql',
                      'NAME': 'mytestdb',
                      'PORT': 5433,
                      'USER': 'mcp'},
             'USER': 'mcp'}
}

端口配置正确,应用本身没有问题正常运行。

然而,当我尝试 运行 pytest 时,将环境变量 DJANGO_SETTINGS_MODULE 设置为上述设置,创建了一个数据库 - 具有正确的所有者 'mcp' - 但之前创建表时出现错误:

django.db.utils.OperationalError: FATAL:  Peer authentication failed for user "mcp"

单元测试有哪些不同之处,我该如何解决这个问题?

@Nader Alexan 没有要设置的主机,通信通过本地 Unix 域套接字进行。我尝试添加

'HOST': '/run/postgresql'

正如我在 pgAdmin 中所做的那样,但这并没有解决问题。

事实证明,pytest 也尝试访问名为 'postgres' 的数据库,即使维护数据库设置为 template1。我无法确定原因,但在 pg_hba.conf 中明确添加对该数据库的访问权限使我能够 运行 测试。

抱歉,如果这个解释有点站不住脚,除了 username/password 我自己之外,我对 PG 身份验证形式还很陌生。