2011-12-31 3 views
3

Я нашел, что медленно выполнять unittest, особенно с операциями с базами данных в Django.Ускорьте unittest в Django

Он прошел весь процесс создания базы данных, таблиц, светильников, затем тестирования и, наконец, уничтожил их.

Мне даже потребовалось почти полминуты, чтобы сделать все это.

Не считая скорости моей машины, есть ли альтернатива ускорению unittest в Django или любых ускоряющих подсказках?

+0

Поскольку вы говорите, что для запуска тестов требуется ~ 30 секунд, я предполагаю, что вы уже используете тесты вашего приложения (а не весь набор тестов django). С учетом этого предположения узкое место для удаления, вероятно, является sqlite (что довольно медленно). Я бы рекомендовал установить локальный сервер postgres/mysql и использовать это вместо этого. –

+1

@OwenNelson: любопытно, SQLite - отличное ускорение скорости для тестов Django. легко отбивает 45-50-секундный набор тестов до 7-10 секунд – Javier

+0

@OwenNelson, я использую MySQL, а не на своей машине, но на удаленном хосте в локальной сети. Возможно, перемещение сервера db на моей машине будет хорошим. Спасибо за напоминание. – xiaohan2012

ответ

2

Что я делаю, это переключиться на SQLite, когда я хочу запустить тесты. Для создания тестовой базы данных в SQLite требуется намного меньше времени.

Вы можете легко сделать с помощью модифицированного файла настроек:

$ python manage.py test my_app --settings=test_settings 

Или в моем случае,

$ python manage.py test my_app --settings=settings.test 

, как я использую «настройки в виде пакета» схемы.

+0

Спасибо, я попробую. Но до этого, как я могу справиться с несовместимостью между MySQL и SQLite, потому что многие из операций db выполняются в raw sql. – xiaohan2012

+0

@ xiaohan2012, к сожалению, это решение вам не поможет. –

+0

Спасибо, я нашел это. – xiaohan2012

2

Вы можете ускорить тесты подножка их в sqlite db stored in memory

DATABASES['default'] = { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': ':memory:' 
    } 
0

Посмотрите на this article. Он имеет много полезных советов, таких как:

  • Изменение функции хэширования пароля MD5 (для меня было сделано большое улучшение).
  • Использование более быстрой базы данных в памяти.
  • Отключение ненужных приложений и промежуточного программного обеспечения.
Смежные вопросы