Когда я запускаю Django тесты, которые вставляют данные в базу данных, он вставляет в мои локальные db.sqlite3
и сохранения , когда тесты заканчиваются. Я не хочу, чтобы это произошло, и это не должно быть в соответствии с документами :
Независимо от того, пройдены тесты или нет, базы данных тестов уничтожаются, когда все тесты были выполнены.
Мой модульный тест:
from unittest import TestCase
from web.constants import USER_TYPE_CONTRACTOR
from web.models import User
class LoginTestCase(TestCase):
def setUp(self):
self.demo_user_1_username = 'c2'
User.objects.create(username=self.demo_user_1_username, password='c12345678')
def test_user_defaults_to_contractor(self):
demo_user_1 = User.objects.get(username=self.demo_user_1_username)
self.assertEqual(demo_user_1.user_type, USER_TYPE_CONTRACTOR)
def doCleanups(self):
"""Delete demo data from database"""
# I needed to do this as workaround
# demo_user_1 = User.objects.get(username=self.demo_user_1_username)
# demo_user_1.delete()
Пользователь c2
теперь находится в db.sqlite3
, поэтому, когда я снова запускаю тест, не удается, поскольку имя пользователя c2
уже существует.
Я пытался сделать это в settings.py
:
DATABASES = {
'default': dj_database_url.config(conn_max_age=600)
}
DATABASES['default']['TEST'] = {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'test_db.sqlite3'),
}
Но test_db.sqlite3
не создано.
Как я могу использовать базу данных sqlite3 в памяти, чтобы она не влияла на мою локальную базу данных при тестировании?