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,这并没有使我更接近答案。

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

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1241420.html

大家都在问