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 автоматически создаст для вас тестовую базу данных