Итак, я пытаюсь смоделировать функцию, и она не высмеивается в модуле, где она вызывается, а при вызове непосредственно в тестовой функции. Я не уверен, что я делаю неправильно. Я использую patch все время без проблем.
Итак, в тесте у меня ниже
from unittest.mock import patch
from django.test import TestCase
from web.utils.registration import test_render_mock
class TestRenderMock(TestCase):
@patch("django.shortcuts.render")
def test_render_mock(self, render_mock):
request = self.make_request()
# Calls render in same way in function below
test_render_mock(request)
from django.shortcuts import render
r = render(request, 'c')
print(type(r))
, который вызывает функцию в файле web / utils / registration.py
from django.shortcuts import render
def test_render_mock(request):
r = render(request, 'registration/signup_link_error.html')
print(type(r))
И это не издевается над вызовом рендеринга в функции test_render_mock , но оно есть в тестовой функции test_render_mock () . Вывод консоли ниже.
<class 'django.http.response.HttpResponse'>
<class 'unittest.mock.MagicMock'>
Понятия не имею, что я делаю не так. Буду признателен за любую помощь.
Использование python версии 3.8.2 и Django 3.0.5
ОБНОВЛЕНИЕ
Я использовал сторонний макет библиотеки, но теперь мы используем встроенную библиотеку tne unittest.
теперь для сторонней библиотеки вам нужно определить путь к модулю, куда она импортируется, вот так:
from unittest.mock import patch
from django.test import TestCase
from web.utils.registration import test_render_mock
MODULE_TESTING: str ='...'
class TestRenderMock(TestCase):
@patch(f"{MODULE_TESTING}.render")
def test_render_mock(self, render_mock):
request = self.make_request()
# Calls render in same way in function below
test_render_mock(request)
from django.shortcuts import render
r = render(request, 'c')
print(type(r))