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

标签 python django python-3.x django-rest-framework

我正在尝试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_permissionView 实例?

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


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

相关文章:

python - 通过域范围委派模拟用户的服务帐户访问 Google Sheets API 失败

python - 在 centos 7 上安装 python netsnmp

python - 为什么我在尝试导入 JSON 时收到 IntegrityError?

Python - 错误 : look-behind requires fixed-width pattern

python - 如何用 pyparsing 解析这个字符串

python - 类型错误 : <unknown> is not a numpy array in cv2. calcOpticalFlowPyrLK()

python - Django + SWFUpload 的代码示例?

Django TastyPie 地理距离查找

python - 如何在 Python 3.7+ 中定义循环依赖的数据类?

python - 如何从字符串的排列列表中分离元素?