Некоторые мои модульные тесты занимают 10-15 секунд просто, чтобы mysql составил таблицы. Это кажется излишне длинным. Это должно составить приблизительно 50 таблиц, но это - все еще только 3 таблицы в секунду. Это - большое раздражение когда рабочие модульные тесты много раз.
Как обходное решение, я выполнял свои модульные тесты в sqlite3. Это сверкает быстро, но я предпочел бы запускать свои тесты на MySQL, так как это что мои живые выполненные серверы.
Для иллюстрирования различия в скорости создайте новый проект. Затем выполненный syncdb на нем с помощью mysql. Затем попробуйте его с помощью sqlite3.
[~/testproject] ./manage.py syncdb
Creating table auth_permission
Creating table auth_group
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site
Для меня требуется приблизительно 2 секунды для создания приведенных выше таблиц в MySQL. Sqlite3 почти мгновенен.
Я выполняю mysql на своей машине разработки. Вот мой my.cnf.
Предложите любые подсказки или тонкие настройки, о которых можно думать, который мог бы помочь ускорить время создания таблицы MySQL.
Вы можете создать RAM-диск и переместить туда db только для модульного тестирования. Если для этого написать скрипт, то это автоматически и очень удобно.
Кроме того, для других целей я написал собственный тестовый прогон, который загружает БД. из дампа sql вместо того, чтобы создавать его, а затем создавать таблицы.
Вы выбираете.