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 (将#修改为@)