Django unittests mock.patch не будет работать, если я импортирую функцию поверх файла
Здравствуйте, в настоящее время возникла проблема, решение которой я не смог найти.
У меня есть приложение django, которое взаимодействует с внешними сервисами, чтобы писать unittests, я должен патчить функции, которые вызывают внешние сервисы с mock.patch
#api_views.py
from examplemodule import examplefunction # just example
class GetSomeInfoFromExternalService(ApiView):
def get(self, *args, **kwargs):
if example_function(attrs) == somevalue:
return Response({'detail':'OK'})
return Response({'detail':'Not ok'})
вот мой другой файл
#tests.py
from unittests import mock
from django.test import TestCase
class MyTestCase(TestCase):
@mock.pach('examplemodule.examplefunction')
def test_1(self):
examplefunction.return_value=123
Похоже, что метод patch не будет работать, но если я импортирую examplefunction
внутри ApiView.get метод переопределяется и mock работает.
#api_views.py
class GetSomeInfoFromExternalService(ApiView):
def get(self, *args, **kwargs):
from examplemodule import examplefunction # If the import is here the override is working properly
if example_function(attrs) == somevalue:
return Response({'detail':'OK'})
return Response({'detail':'Not ok'})