我编写了以下装饰器,用于某些Django视图,我不希望用户登录(例如 register 和 forgot-password ):
def not_logged_in(view, redirect_url=None):
def _wrapper(request, *args, **kwargs):
if request.user.is_authenticated():
return HttpResponseRedirect(
redirect_url or '/'
)
return view(*args, **kwargs)
return _wrapper
有了它,我可以轻松地写出来:
@not_logged_in
def register(request):
...
我已经为正在使用它的视图编写了单元测试,并且它没有问题,但我想知道单独测试not_logged_in
函数的最佳方法是什么?
答案 0 :(得分:3)
我想您可以轻松地模拟request
对象,然后用装饰器装饰一个简单的函数,并将该请求传递给参数。
我还假设您的_wrapper
实际上没有未使用的request
参数?