微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django模块测试:无法将非匿名用户附加到请求

如何解决Django模块测试:无法将非匿名用户附加到请求

我正在尝试测试我在DRF中的自定义权限是否可以正常工作,因此我需要模仿具有不同权限的用户发出的一些请求(这些权限作为属性存储在db中,并链接认User表的表中)

我正在使用RequestFactory设置请求用户,但是它似乎无法正常工作,因为它仍然将请求用户视为AnonymousUser,并在检查权限时返回AttributeError。

这是我的测试用例的示例:

class TestSingleClient(TestCase):

    def setUp(self):
        self.factory = RequestFactory()
        self.user = User.objects.create(
            username='admin',password='admin',first_name='Name',last_name='Surname',email='user@gmail.com',is_staff=True
        )
        AccountProfile.objects.create(
            phone='8999999999',occupation='tst_occupation',user=self.user
        )
        Client.objects.create(
            name='Client1',type=0)

    def test_get_single_client(self):
        client = Client.objects.get(name='Client1')
        request = self.factory.get('/system/clients/{}/'.format(client.id))
        request.user = self.user
        response = ClientView.as_view()(request,id=client.id)
        client_data = Client.objects.get(id=client.id)
        serializer = ClientSerializer(client_data)
        self.assertEqual(response.data,serializer.data)
        self.assertEqual(response.status_code,status.HTTP_200_OK)

结果为:

File "***/core/extra.py",line 10,in my_permissions_func
    roles = AccessRoles.objects.filter(user_groups=user.user_profile.group_id,can_read=True).\
AttributeError: 'AnonymousUser' object has no attribute 'user_profile'

有什么建议可以解决吗?

P.S。这里讨论了一个类似的话题:Django RequestFactory doesn't store a User,这并没有使我更接近答案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。