rest框架权限测试



我正在使用最新的django-rest-framework,并想创建一些测试。我有一个ModelViewSet和一个访问request.GET的自定义权限。这一切都运行良好,但是在我的单元测试中,GET字典是空的。下面是我的代码:

class MyModelViewSet(ModelViewSet):
     ...
     permission_classes = [IsAuthenticated, CustomPermission]
     ...
permissions.py:
class CustomPermission(permissions.BasePermission):
    def has_permission(self, request, view):
       # here I access the GET to check permissions
       id = request.GET.get('id')
       obj = MyModel.objects.get(id=id)
       return request.user == obj.owner

在可浏览的api中,这一切都像预期的那样工作。但是现在我写了一个unittest:

class  ModelTestCase(APITestCase):
    def setUp(self):
        self.obj = mommy.make('MyModel') 
        self.user = mommy.make('CustomUser')       
    def test_list(self):
        self.client.force_authenticate(user=self.user)
        url = '%s?id=%s' % (reverse('mymodel-list'), self.obj.id)
        r = self.client.get(url)  # this raises the exception

这里我得到一个异常:

models.DoesNotExist: MyModel matching query does not exist.

调试时我发现request.GEThas_permission中是空的。有没有人知道为什么这是工作在"生产",而不是在单元测试?

更新到最新版本(3.2.1)修复了此问题。

最新更新