python - Python 中的单元测试装饰器

标签 python django unit-testing decorator

我编写了以下装饰器,用于某些我不希望用户登录的 Django View (例如 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):
    ...

我已经为使用它的 View 编写了单元测试,并且它可以正常工作,但我想知道单独测试 not_logged_in 函数的最佳方法是什么?

最佳答案

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

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

关于python - Python 中的单元测试装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10149058/

相关文章:

javascript - HTML 表单的客户端验证

python - ImageField 的 url 方法返回非 Url 值 - Django

django - 将模型中没有的计数字段添加到 GET 请求

python - 在 Amazon AWS 上的 PyPy 上运行 Django 应用程序

python - 绘制 sum(matrix,axis=0) 并用求和所需的非零元素的行索引标记该图

Python OpenCV : Conversion from float to int for using cv2. 行()

python - 检查是否使用不同参数多次调用函数

Python 类型错误 : unorderable types: builtin_function_or_method() < int()

c# - 如何编写单元测试以确定对象是否可以被垃圾回收?

java - Android 单元测试和类成员可见性