django - django tests - 测试登录和权限
问题描述
我有以下设置:我有一个视图和两个可能的权限组。我想测试我的视图是否在所有可能的情况下都可以访问。意义:
- 未登录
- 用错误的组登录
- 使用正确的组登录
我的权限控制通过以下方式工作Mixin
:
class PermissionMixin(object):
group_list = None
def in_groups(self, u):
if u.is_authenticated():
if u.is_superuser or bool(u.groups.filter(name__in=self.group_list)):
return True
return False
def dispatch(self, request, *args, **kwargs):
if self.in_groups(request.user):
return super(PermissionMixin, self).dispatch(request, *args, **kwargs)
return render(request, '403.html', status=403)
我的网址如下所示:
url(r'^my-view/$', login_required(views.MyView.as_view()), name='my-view-view')
当我尝试使用RequestFactory
测试时,我总是得到状态200
而不是403
oder 302
(重定向到登录):
self.factory = RequestFactory()
request = self.factory.get(reverse('my-view'))
request.user = AnonymousUser()
response = MyView.as_view()(request)
self.assertEqual(response.status_code, 302)
当我尝试Client()
时,它可以工作,但处理请求需要几秒钟。当我想测试我所有的观点时,我会想在等待 CI 管道时自杀。
任何想法为什么RequestFactory
不能正确工作?或者我该如何解决我的问题?
谢谢!
解决方案
推荐阅读
- twilio-api - 通过 JWT 使用 QR 字符串生成的 QR 码无效
- django - 没有任何内容写入 Nginx access.log/error.log - 如何进行故障排除?
- java - 如何修复 CountDownTimer 在 android 应用程序中的错误
- r - 有没有办法根据文本进行过滤?
- javascript - 如果基于特定字段不存在,MongoDB 将项目添加到文档数组
- java - 从国际象棋中搜索国王的每一个方向
- terraform - 如何修复 Terraform 中的 badRequest 错误 400?
- linux - 从没有文件句柄的内存映射文件中清除操作系统缓存
- html - 使用带有变换的位置粘性时出现问题:比例
- ios - 如何使用 Alamofire 更改全局变量?