【发布时间】:2019-07-09 04:40:01
【问题描述】:
我正在尝试 unit 测试 Django REST Framework 视图集权限,原因有两个:速度和简单性。为了与这些目标保持一致,我还想避免使用任何模拟框架。基本上我想做这样的事情:
request = APIRequestFactory().post(…)
view = MyViewSet.as_view(actions={"post": "create"})
self.assertTrue(MyPermission().has_permission(request, view))
这种方法的问题在于view 实际上不是View 实例,而是一个函数,它对View 实例执行某些操作,并且它不具有某些属性我用在has_permission,比如action。如何构造可以传递给has_permission 的View 实例?
权限已经在集成和接受级别进行了测试,但我想避免创建几个复杂且耗时的测试来简单地检查每个相关操作是否受到保护。
我已经能够通过猴子修补视图集实例并手动调度它来解决这个问题:
view_set = MyViewSet()
view_set.action_map = {"post": "create"}
view_set.dispatch(request)
【问题讨论】:
-
分享您的
viewset代码和permission代码
标签: python django python-3.x django-rest-framework