У меня работает API на Heroku, и я хотел бы иметь возможность протестировать его с помощью тестовой базы данных. У меня проблема в том, что метод TestCase setUp (self) добавляет данные в автоматически созданную тестовую базу данных. Затем мои тесты отправляют запрос POST на локально работающую версию самого себя. Тогда этот код просто использует обычную базу данных по умолчанию вместо тестовой базы данных, в которой выполняются тесты.
Вот некоторый код и то, что я пробовал.
В моем основном файле settings.py я назвал мою базу данных примерно так:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'theOneTrueDB',
}
}
И я прочитал здесь (https://docs.djangoproject.com/en/3.0/topics/testing/overview/#the -test-database ), что
Имена тестовых баз данных по умолчанию: созданный путем добавления test_ к значению каждого ИМЯ в БАЗАХ ДАННЫХ.
Поэтому я решил в своем файле представлений для одного из своих приложений, что я мог бы просто выполнить Tenant.objects.using ('test_theOneTrueDB'). () и это сработало бы, но там написано
django .db.utils.ConnectionDoesNotExist: соединение test_theOneTrueDB не существует
Я также пытался
Tenant.objects.using('test_default')
и многое другое. Я потерян. Я также согласился бы настроить другую базу данных, а затем использовать ее в настройках с
Tenant.objects.save(using='theOneTrueDBTest)
или чем-то в этом роде.
Любая помощь будет признательна!
РЕДАКТИРОВАТЬ: я знаю, мои настройки выглядят так
DATABASES = {
'default': {
'NAME': 'theOneTrueDB',
'ENGINE': 'django.db.backends.sqlite3',
},
'other': {
'NAME': 'theOneTrueTest',
'ENGINE': 'django.db.backends.sqlite3',
}
}
, но затем, если я пытаюсь сохранить в другой базе данных, как это
tempPM.save(using='other')
Затем я получаю эту ошибку
AssertionError: Запросы базы данных к «другому» не разрешены в этом тесте. Добавьте «other» в API.tests.TenantLogin.databases, чтобы обеспечить надлежащую изоляцию теста и отключить этот сбой.