Django unittest функция с перенаправлением на основе mock return_value
У меня есть функция представления, похожая на
def my_function(request):
session = create_something('some_random_string')
return redirect(session.url, code=303)
Для проверки
import unittest
from django.test import TestCase
from unittest.mock import patch
from my_app.views import my_function
class TestMyFunction(TestCase):
@patch('my_app.views.create_something', return_value={
"url": "https://tiagoperes.eu/"
})
def test_my_function(self, mock_create_something):
response = self.client.get("/my-function/")
Это дает
AttributeError: объект 'dict' не имеет атрибута 'url'
Этот вопрос похож на следующие вопросы
- Невозможно перенаправить, когда класс модели Django насмехается (при этом я использую
redirect()
, который принимает динамические значения, поступающие из насмехаемой функции, поэтому также легко могу достичь ошибкиTypeError: quote_from_bytes() expected bytes
) - Как отладить исправленный метод с помощью unittest.mock (в том, что без
return_value
я бы получилTypeError: expected string or bytes-like object
)
Мне пришлось заменить значение return_value в патче, чтобы использовать MagicMock
@patch('my_app.views.create_something', return_value=MagicMock(url="https://tiagoperes.eu"))