首页 > 解决方案 > Django 1.11 到 2.0 => 单元测试慢 2 倍

问题描述

我刚刚从 Django 1.11 升级到 2.0。除了向后不兼容之外,我没有更改代码中的任何内容:

这是我在迁移前后在本地运行的单元测试:

我已经使用在 Heroku 环境中运行的 CI 进行了测试(以确保它与我的本地环境无关),结果相同(执行测试的时间要长 2 倍)。

问题

你知道这里发生了什么吗?你将如何调试这个?

标签: djangodjango-rest-framework

解决方案


我在这里的 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 值。


推荐阅读