Mocking-атрибут класса, который используется в тестируемом классе

Я пытаюсь написать модульные тесты для моего приложения django, но не могу правильно использовать mock.patch.

мой код :

apps\MyApp\DataAccessLayer\CctDAO.py :

from ..models import CCT
from ..serializers import CctSerializer


"""
    get a list of all CCTs

    @return a list of all the CCTs
"""
def getAll() -> list[dict]:
    entities = CCT.objects.all()
    serializer = CctSerializer(entities, many=True)

    return serializer.data

apps\Myapp\serializers.py :

from rest_framework_mongoengine.serializers import DocumentSerializer

from .models import CCT

"""
    serializer to encode and decod CCT to JSON
"""
class CctSerializer(DocumentSerializer):
    class Meta:
        model = CCT
        exclude = ('id', ) #using custom id field instead of the default

мой тестовый пример :

from unittest import TestCase, mock

from .DataAccessLayer import CctDAO

class Test_CCT_DAO(TestCase) :

    # @mock.patch('apps.MyApp.DataAccessLayer.CctDAO.CCT.objects.all', return_value=['mocked-data1'])

    @mock.patch.object(CctDAO.CctSerializer, 'data', new_callable=mock.PropertyMock, return_value = ['mocked-data1'])
    def test_getall_empty(self, mock1=None, mock2=None):
        print(CctDAO.getAll())
        self.assertEqual(['mocked-data2'], CctDAO.getAll())

В этом тестовом случае CctDAO.getAll() возвращает [], а не мои насмешливые данные.

Я также пробовал:

 @mock.patch.object(CctDAO, 'CctSerializer.data', new_callable=mock.PropertyMock, return_value = ['mocked-data1'])

Но это приводит к ошибке, что модуль CctDAO не имеет атрибута 'CctSerializer.data'.

Я также пробовал:

@mock.patch('apps.MyApp.DataAccessLayer.CctDAO.CctSerializer.data', new_callable=mock.PropertyMock, return_value=['mocked-data1'])

Который также возвращает [], а не насмешливые данные.

Как мне правильно установить патч CCT.objects.all() и serializer.data?

Вернуться на верх