Когда я запускаю manage.py test
django использует мою базу данных по умолчанию вместо тестовой.
Я что-то не так понимаю из документов?
Согласно документам , поведение по умолчанию таково: «для тестов создаются отдельные, пустые базы данных» .
Я установил значение «TEST: NAME» просто для уверенности, но состояние документаэто необходимо, только если я хочу настроить имя тестовой базы данных вместо значения по умолчанию test_{dbname}
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"HOST": "0.0.0.0",
"NAME": "mydb_db",
"USER": "postgres",
"PASSWORD": "postgres",
"PORT": 5432,
"TEST": {"NAME": "test_mydb_db"},
}
}
from unittest import TestCase
class SimpleTest(TestCase):
def test_get_user_authorized(self):
client = Client()
breakpoint()
>>> (Pdb) from django.db import connection
>>> (Pdb) connection.settings_dict['NAME']
'mydb_db'
Если я читаю или создаю данные в модульном тесте, данные из mydb_db
а не test_mydb_db
, как я ожидал.
Дополнительные примечания
База данных настраивается с помощью docker compose, но я не думаю, что это должно что-то влиять:
services:
db:
container_name: postgres
image: postgres:9.6
restart: always
volumes:
- postgres_data:/var/lib/postgresql/data/
ports:
- "5432:5432"
environment:
POSTGRES_DB: mydb_db
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
PGPASSWORD: postgres