【问题标题】:Unit testing decorators in PythonPython 中的单元测试装饰器
【发布时间】:2012-04-26 07:16:44
【问题描述】:

我编写了以下装饰器,用于一些我不希望用户登录的 Django 视图(如 registerforgot-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 函数进行单元测试的最佳方法是什么?

【问题讨论】:

标签: python django unit-testing decorator


【解决方案1】:

我想您可以轻松地模拟 request 对象,然后用您的装饰器装饰一个简单的函数并将该请求传递一个参数。

我还假设您的_wrapper 没有真正未使用的request 参数?

【讨论】:

  • 你是对的。首先,我在做def __wrapper(*args, **kwargs),但后来我手动添加了request参数,忘记在SO上修改代码了:)
猜你喜欢
  • 2016-08-20
  • 2016-12-30
  • 1970-01-01
  • 2011-03-02
  • 1970-01-01
  • 2013-03-19
  • 2011-02-13
  • 1970-01-01
  • 2015-03-10
相关资源
最近更新 更多