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 в наборе запросов. Он не использует тестовую базу данных, а использует производственную базу данных

enter image description here

Когда я запускаю тест из python manage.py test my_app.tests, он проходит. И выводит 'Creating test database' и 'Destroying test database' в начале и конце теста соответственно. Я предполагаю, что здесь используется тестовая база данных.

Как я могу заставить VSCode использовать тестовую базу данных для тестов и не упускаю ли я чего-нибудь?

Перейдите на pytest. Pytest автоматически создаст для вас тестовую базу данных

Вернуться на верх