Jam*_*a22 19 python django unit-testing decorator python-unittest
我正在为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')
Run Code Online (Sandbox Code Playgroud)
nkr*_*rkv 25
只是:
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')
Run Code Online (Sandbox Code Playgroud)
该模拟库在这里帮助.