gpt4 book ai didi

python - 测试 Python 装饰器?

转载 作者:IT老高 更新时间:2023-10-28 20:53:50 26 4
gpt4 key购买 nike

我正在为 Django 项目编写一些单元测试,我想知道是否可以(或有必要?)测试我为它编写的一些装饰器。

这是我编写的装饰器示例:

class login_required(object):

def __init__(self, f):
self.f = f

def __call__(self, *args):
request = args[0]
if request.user and request.user.is_authenticated():
return self.f(*args)
return redirect('/login')

最佳答案

简单地说:

from nose.tools import assert_equal
from mock import Mock

class TestLoginRequired(object):
def test_no_user(self):
func = Mock()
decorated_func = login_required(func)
request = prepare_request_without_user()
response = decorated_func(request)
assert not func.called
# assert response is redirect

def test_bad_user(self):
func = Mock()
decorated_func = login_required(func)
request = prepare_request_with_non_authenticated_user()
response = decorated_func(request)
assert not func.called
# assert response is redirect

def test_ok(self):
func = Mock(return_value='my response')
decorated_func = login_required(func)
request = prepare_request_with_ok_user()
response = decorated_func(request)
func.assert_called_with(request)
assert_equal(response, 'my response')

mock图书馆在这里提供帮助。

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com