我具有以下设置:我有一个视图和两个可能的权限组。我想测试我的视图在所有可能的情况下是否均可到达。含义:
我的权限控制通过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
或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
无法正常工作?或者我该如何解决我的问题?
谢谢!