如何在Django单元测试中测试匿名用户

时间:2013-06-28 05:03:23

标签: django testing

  • 我正在测试表格
  • 用户可能会在显示
  • 表单时登录或匿名登录
  • 如果表单成功,则用户将登录
  • 如果表单失败,用户将保持原样
  • 我想通过单元测试来确认这种行为。

django.test.Client确实有login方法用于此类操作,但如果有response个对象,如何确定谁登录?

    data = {'email':'john@example.com','password':'abc'}
    c = Client()
    # here was can assume `request.user` is the AnonymousUser
    # or I can use `c.login(..)` to log someone in
    r = c.post('/myform/', data)

如果我要提交第二个请求,我的unittest可以确定request.user现在是谁吗?

1 个答案:

答案 0 :(得分:6)

你可以这样做:

client = Client()
# here was can assume `request.user` is the AnonymousUser
# or I can use `c.login(..)` to log someone in
from django.contrib import auth
user = auth.get_user(client) # it returns User or AnonymousUser

if user.is_anonymous():
   ...

它的工作原理是因为 client 保持用户会话(client.session)。