[英]How to create a Django REST Framework View instance from a ViewSet class?
我试图对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)
您可以执行以下操作。
request = APIRequestFactory().post(…)
view_obj = MyViewSet()
self.assertTrue(MyPermission().has_permission(request, view_obj))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.