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

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)

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

4

1 回答 1

11

你可以这样做:

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.session)。

于 2013-06-28T05:53:44.683 回答