【问题标题】:Can I use an identity hasher for testing?我可以使用身份哈希进行测试吗?
【发布时间】:2013-05-13 15:41:46
【问题描述】:

我有一些测试需要创建全功能测试用户。我通过在我的测试中继承TestCase 并在setUp 方法中初始化我的测试数据库来做到这一点。但是,为了创建功能齐全的用户,我需要通过调用make_password 为他们提供有用的密码

这在计算上是足够密集的,以至于我的开发服务器(Raspberry Pi)每次测试都需要几秒钟的时间。

我的问题是:我可以强制 Django 在测试期间不散列密码吗?这将显着提高我的测试套件的性能,并为我带来随之而来的所有好处。

【问题讨论】:

  • 只是出于好奇,您为什么要在 Raspberry Pi 上进行测试?为什么不直接在本地测试或使用虚拟机?
  • 因为我的开发笔记本电脑是两代旧的 chromebook:P
  • 您确定哈希会占用您大部分时间吗?
  • @JakubM.:像 Bcrypt 和 PBKDF2 这样的散列函数的重点是尽可能慢。

标签: python django testing


【解决方案1】:

也许这就是您要寻找的: https://docs.djangoproject.com/en/dev/topics/auth/passwords/

基本上,创建django.contrib.auth.hashers.PBKDF2PasswordHasher 的子类,并将新哈希器添加为设置中PASSWORD_HASHERS 的第一个条目。

【讨论】:

  • 这是一个安全问题。我可以仅在测试期间启用此功能吗?
  • 测试函数上的override_settings 是否也适用于setUp 方法?
  • 我不明白为什么它不起作用。请注意,您可以在运行测试时指定一个替代设置文件,python manage.py test --settings=test_settings 请参阅我关于使用自定义设置的相关答案stackoverflow.com/a/14545196/641955
猜你喜欢
  • 2020-07-06
  • 1970-01-01
  • 2016-06-06
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
相关资源
最近更新 更多