问题描述
我正在尝试测试我在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 (将#修改为@)