Django mocking serializer __init__
Я хочу в своем тесте высмеять __init__
сериализатор следующим образом :
serializer = MySerializer(data={'name':'yosi'})
serializer.data # will return {'name':'yosi'} and ignore default behavior, like requiring to call is_valid first
Я просто хочу, чтобы сериализатор хранил данные как есть, а не делал обычные __init__
Метод, который я хочу протестировать :
MyDAO.py :
from ..models import MyModel
from ..serializers import MySerializer
def getAll() -> list[dict]:
entities = MyModel.objects.all()
serializer = MySerializer(entities, many=True)
return serializer.data
Я попытался сделать следующее, но безуспешно :
def _mocked_seriailzer__init__(self, data, many):
self.data = data
@mock.patch('<PATH_TO_SERIALIZERS_FILE>.MySerializer.__init__', _mocked_seriailzer__init__)
@mock.patch.object(MyDAO, 'MyModel')
def test_getall(self, model):
mockedData = ['mocked-data1', 'mocked-data2', 'mocked-data3']
model.objects.all.return_value = mockedData
self.assertEqual(mockedData, MyDAO.getAll())
но он жалуется, что тест is missing 1 required positional argument: 'many'
def _mocked_seriailzer__init__(self, data, many):
self.data = data
@mock.patch.object(MyDAO, 'MySerializer.__init__', _mocked_seriailzer__init__)
@mock.patch.object(MyDAO, 'MyModel')
def test_getall(self, model):
mockedData = ['mocked-data1', 'mocked-data2', 'mocked-data3']
model.objects.all.return_value = mockedData
self.assertEqual(mockedData, MyDAO.getAll())
но там говорится, что MyDAO does not have the attribute 'CctSerializer.__init__'
как правильно издеваться над serializer.__init__
?