我正在尝试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))
关于python - 如何从 ViewSet 类创建 Django REST Framework View 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56945453/