【发布时间】:2017-06-15 16:11:22
【问题描述】:
我正在尝试测试我的 Django 应用程序,该应用程序具有在其自己的模块中实例化的代理 API。
api.py
class ProxyApi(object):
def __init__(self, server_info):
pass
def validate_login(self, credentials):
# call to real api here
api = ProxyAPi()
middlewares.py
from mymodule.api import api
class MyMiddleware(MiddlewareMixin):
def process_request(self, request):
if api.validate_login():
# do something with proxy api
views.py
from mymodule.api import api
class TaskView(LoginRequiredMixin, FormView):
def get(self, request):
if api.validate_login():
# do something with proxy api
tests.py
class InputTasksViewTest(TestCase):
@mock.patch('mymodule.api.ProxyAPi')
def test_add(self, mock_api):
mock_api.validate_login.return_value = True
response = self.client.get(reverse('task'))
原来的validate_login仍然被调用。
我想知道如何处理 ProxyApi 的实例化,同时仍保留模拟能力。
【问题讨论】:
标签: python django unit-testing mocking