【问题标题】:Testing functions concerning the user object with Django使用 Django 测试有关用户对象的功能
【发布时间】:2014-09-01 09:50:24
【问题描述】:

我正在为我的 Django 项目编写一些测试,我正在尝试测试登录函数和将在“user_passes_test”装饰器中的函数,在这个特定的测试中,一个名为“is_teacher”的函数。不幸的是,我不太确定如何从响应中获取用户对象。我尝试的是以下内容,但我只收到“'dict'对象没有属性'user'”的错误。

user = User.objects.create_user(
    first_name='Elmar',
    last_name='Fudd',
    username='ef123',
    email='e.fudd@acme.edu',
    password='rabbitseason'
)
self.client.login(
    username='elmar', password='rabbitseason')
response = self.client.get('/')
request = response.request
self.assertTrue(is_teacher(request.user))

如何从响应中获取登录用户?

【问题讨论】:

  • 你用什么来创建你的用户?你确定你的数据库中有他的条目吗?你用过固定装置吗?还是什么?
  • 已将我创建用户的部分添加到上面的部分。感谢您的关注!
  • 假设您使用的是默认的 Django 用户模型,您必须在创建用户时设置密码,因为是加密的。看看这个链接...docs.djangoproject.com/en/1.7/topics/testing/tools/…
  • 我愿意 - 我使用 create_user 方法自动加密密码(如您提供的链接中所述)
  • 我明白了,尝试在您的设置类中创建用户...就像这里docs.djangoproject.com/en/1.7/topics/testing/advanced/#example

标签: django authentication testing


【解决方案1】:

如 Django 文档中所述:

回想一下,不支持中间件。您可以模拟登录 用户通过手动设置 request.user。

所以基本上你必须手动将用户分配给请求:

request.user = user 

其中 user 是您手动创建的用户模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 2015-09-20
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多