Модульные тесты Django терпят неудачу из-за сокета домена

Я настроил Django на использование базы данных с одноранговой аутентификацией через локальный сокет домена Unix вместо аутентификации пользователя/пароля. Вот настройки. БАЗЫ ДАННЫХ:

{'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"

Что модульные тесты делают по-другому, и как я могу это исправить?


person Ruud van der Linden    schedule 08.10.2019    source источник
comment
Вы проверили, решил ли параметр HOST проблему?   -  person Nader Alexan    schedule 08.10.2019
comment
Кроме того, проверьте: stackoverflow.com /вопросы/8167602/   -  person Nader Alexan    schedule 08.10.2019


Ответы (1)


@Nader Alexan Нет хоста для установки, связь идет через локальный сокет домена Unix. я пытался добавить

'HOST': '/run/postgresql'

как я должен был сделать в pgAdmin, но это не решило проблему.

Оказывается, pytest также пытается получить доступ к базе данных с именем «postgres», хотя база данных обслуживания установлена ​​​​на template1. Я не смог определить почему, но явное добавление доступа к этой базе данных в pg_hba.conf позволило мне запустить тесты.

Извините, если это объяснение немного шаткое, я новичок в формах аутентификации PG, отличных от имени пользователя/пароля.

person Ruud van der Linden    schedule 10.10.2019