VSCode не использует тестовую базу данных для тестов Django
У меня возникла проблема, когда функция тестирования VSCode использует производственную базу данных вместо создания тестовой базы данных. tests.py
from django.test import TestCase
# For VSCode test discovery
from django import setup
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testing.settings")
setup()
class MyTestCase(TestCase):
SomeModel.objects.create()
my_model = SomeModel.objects.all()
assert len(SomeModel.objects.all()) == 1
Я предварительно создал 1 экземпляр SomeModel, поэтому если вы сделаете SomeModel.objects.all() в оболочке, она вернет кверисет с этим одним экземпляром.
Если я запущу этот тест из тестера vscode, он завершится неудачей. И когда я отлаживаю его, я вижу, что my_model имеет два экземпляра SomeModel в наборе запросов. Он не использует тестовую базу данных, а использует производственную базу данных
Когда я запускаю тест из python manage.py test my_app.tests, он проходит. И выводит 'Creating test database' и 'Destroying test database' в начале и конце теста соответственно. Я предполагаю, что здесь используется тестовая база данных.
Как я могу заставить VSCode использовать тестовую базу данных для тестов и не упускаю ли я чего-нибудь?
Перейдите на pytest. Pytest автоматически создаст для вас тестовую базу данных
