我有一个自定义函数来验证请求。我试图在测试期间模拟这个模块,但到目前为止没有运气
这是我的观点
from auth_utils import authenticate_request, UnauthenticatedRequest
def my_view(request):
try:
authenticate_request(request)
except UnauthenticatedRequest:
return Http404()
return render(request, 'ok.html', {'status': 'ok'})
在测试中我试图模仿authenticate_request
所以它不会引发错误
class TestMyView(MyAPITestCase, TestCase):
@mock.patch('auth_utils.authenticate_request', side_effect=None)
def setUp(self, mock_auth):
self.response = self.client.get(reverse('my-view'))
def test_should_return_ok(self):
self.assertEqual(self.response.context.get('status'), 'ok')
无法使其发挥作用。有什么建议 ?
谢谢,Python 2.7,Django 1.8。
答案 0 :(得分:4)
您需要模拟导入它的函数authenticate_request
,而不是它定义的位置。
因此,例如,如果my_view
中定义了myapp/views.py
,则authenticate_request
会导入myapp.views
。所以你想打电话给以下内容:
@mock.patch('myapp.views.authenticate_request', side_effect=None)