Django Unittest сталкивается с ошибкой

Среда: Intellij PyCharm, Python Django, Sqlite3

Я использую стандартный проект установки Django. Я пытаюсь написать несколько юнит-тестов, но сталкиваюсь со следующей ошибкой. После некоторых исследований я оказался здесь.

Конфигурация БД

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

Код tests.py

from django.test import TestCase as djangoTestCase
import os
import unittest

# Create your tests here.
class TestExample(djangoTestCase):

    def setUp(self):
        print('setup')
        print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

    def test_abc(self):
        self.assertEqual(1,1)

    def tearDown(self):
        print('tearDown')

if __name__ == '__main__':
    unittest.main()

Это выход

django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.

Я пытался найти ошибку, читая документацию, но безуспешно. В чем может быть проблема?

2 ответа

Я столкнулся с той же проблемой в PyCharm. Мой конфиг БД находится в файле config.settings_dev, По умолчанию PyCharm не знает об этом.

Чтобы решить это,

  1. Откройте настройки запуска / отладки PyCharm в меню Run -> Edit Configurations
  2. расширять Templates, затем Djano tests,
  3. Добавить переменную среды DJANGO_SETTINGS_MODULE со значением config.settings_dev (замените его своим собственным файлом настроек)

PyCharm Run Config Templates

  1. Удалите все существующие конфигурации в Django tests

5. Запустите тесты в PyCharm

С тестом Django вам не нужна эта часть:

if __name__ == '__main__':
    unittest.main()

вы просто запускаете тесты с python manage.py test команда.

Другие вопросы по тегам