Skip to main content
 首页 » 编程设计

python之如何从 ViewSet 类创建 Django REST Framework View 实例

2025年05月04日36mayingbao

我正在尝试unit 测试 Django REST Framework View 集权限,原因有两个:速度和简单性。为了实现这些目标,我还想避免使用任何模拟框架。基本上我想做这样的事情:

request = APIRequestFactory().post(…) 
view = MyViewSet.as_view(actions={"post": "create"}) 
self.assertTrue(MyPermission().has_permission(request, view)) 

这种方法的问题是 view 实际上不是一个 View 实例,而是一个 function,它用 做一些事情查看实例,它没有我在has_permission中使用的某些属性,例如action。如何构建可传递给 has_permission 的 View 实例?

权限已经在集成和验收级别进行了测试,但我想避免创建几个复杂且耗时的测试来简单地检查每个相关操作是否受到保护。


我已经能够通过 monkeypatching 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))