Почему django требует, чтобы я создал базу данных mysql только для запуска тестов? - PullRequest
3 голосов
/ 25 февраля 2012

При использовании sqlite для django вы можете извлекать ваше приложение из системы контроля версий и запускать модульные тесты без необходимости делать что-то особенное.Но когда вы внезапно переключаетесь на использование mysql в качестве базы данных, вам необходимо создать базу данных.Зачем мне это делать?Это особенно странно, поскольку модульные тесты даже не будут использовать эту базу данных, вместо этого они создадут свою собственную, поставив перед именем «test _».

Ответы [ 3 ]

1 голос
/ 25 февраля 2012

Если вы часто запускаете тесты, добавьте следующий код в ваши настройки.py:

import sys

if 'test' in sys.argv:
    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'test'
    }
}
1 голос
/ 03 марта 2012

Я использую для тестирования почти такое же решение, как @Simon Bächler, но вместо реальной базы данных

'NAME': 'test', 

Я использую

'NAME':' :memory:,

Таким образом, он использует память для обработки тестовых операций, и поэтому не всегда создает / обновляет / удаляет базу данных.

1 голос
/ 25 февраля 2012

Это потому, что Django загружает файл settings.py для запуска набора тестов. Вы можете создать отдельный файл settings.py и использовать его во время выполнения тестов. Как пример с сайта django:

--settings=test_sqlite

при условии, что у вас есть файл settings.py с именем test_sqlite.

Зайдите сюда для получения дополнительной информации:

https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...