django - Django 1.11 到 2.0 => 单元测试慢 2 倍
问题描述
我刚刚从 Django 1.11 升级到 2.0。除了向后不兼容之外,我没有更改代码中的任何内容:
- 更改
url
为path
with route 而不是 regex 参数 - 添加一些
on_delete
我忘记的论点
这是我在迁移前后在本地运行的单元测试:
- 前:
Ran 496 tests in 62.891s
- 后:
Ran 496 tests in 157.244s
我已经使用在 Heroku 环境中运行的 CI 进行了测试(以确保它与我的本地环境无关),结果相同(执行测试的时间要长 2 倍)。
问题
你知道这里发生了什么吗?你将如何调试这个?
解决方案
我在这里的 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 值。