Django от 1.11 до 2.0 => модульные тесты в 2 раза медленнее - PullRequest
2 голосов
/ 23 сентября 2019

Я только что обновился с Django 1.11 до 2.0.Я ничего не изменил в коде, кроме обратной несовместимости:

  • изменив url на path с маршрутом вместо аргумента регулярного выражения
  • добавив несколько on_delete аргументов, где я забыл

Вот мои модульные тесты, выполняемые локально до и после миграции:

  • до: Ran 496 tests in 62.891s
  • после: Ran 496 tests in 157.244s

Я протестировал мой CI, который работает в среде Heroku (чтобы убедиться, что он не связан с моим локальным env), тот же результат (в 2 раза больше для выполнения тестов).

Вопрос

Ты хоть представляешь, что здесь происходит?Как бы вы отладили это?

1 Ответ

2 голосов
/ 23 сентября 2019

Я нашел ответ в Django Changelog здесь

Число итераций по умолчанию для хэша пароля PBKDF2 увеличено с 36 000 до 100 000.

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

Для сравнения определим в settings.py следующее:

PASSWORD_HASHERS = ('django.contrib.auth.hashers.MD5PasswordHasher',)

приведет кМедленные тесты в 5 раз: Ran 496 tests in 31.781s

Полагаю, правильным решением для сохранения быстрых тестов является определение пользовательского значения PASSWORD_HASHERS при запуске тестов.

...