运行测试用例时,Django的user_logged_in信号无效

时间:2017-11-14 10:49:16

标签: python django

我有这个信号:

@receiver(user_logged_in)
def on_user_login(sender, request, **kwargs):
    if request.user.is_superuser:

运行应用程序时一切正常。但是在测试时,这段代码失败了:

self.client.force_login(...)

测试失败了:

  

AttributeError: HttpRequest 对象没有属性用户

如果我删除信号,该测试用例运行正常。

我有Django 1.10

1 个答案:

答案 0 :(得分:0)

在我的测试中,我正在测试其中一个管理员视图。在进行此更改之前,我想先登录用户。我没有意识到的是,我真的只想测试管理视图,而不是登录。

因此,我使用RequestFactory而不是使用客户端进行测试,并将用户传递给它。无需登录。

原始错误是由于django测试中的client未将用户添加到请求中。