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'})
Вернуться на верх