Не получаеться правильно сделать mock зависимостей. При обновлении пользователя. ORM: piccolo

Моя функция на обновления пользователя: ORM: piccolo[postgre]

Взаимодействие микросервисов: gRPC

 async def UpdateUser(self, request, context):
    try:
        user = await User.objects().get(User.id == request.id)
        if user:
            await User.update({
                User.name: request.name,
                User.email: request.email,
                User.age: request.age
            }).where(User.id == request.id).execute()
            return user_pb2.UserResponse(message="User updated")
        else:
            context.set_details("User not found")
            context.set_code(grpc.StatusCode.NOT_FOUND)
            return user_pb2.UserResponse(message="User not found")
    except Exception as e:
        context.set_details(f"Unexpected error: {e}")
        context.set_code(grpc.StatusCode.INTERNAL)
        return user_pb2.UserResponse(message="User not found!")

Пытаюсь сделать тестовый случай, когда у нас получается обновить пользователя.

Код моего теста:

@patch('services.user_service.model.User.objects')
async def test_update_user_success(self, mock_user_objects):
    mock_user = MagicMock()
    mock_user.id = 1
    mock_user.name = "John Doe"
    mock_user.email = "[email protected]"
    mock_user.age = 30

    mock_get = AsyncMock(return_value=mock_user)
    mock_user_objects.return_value.get = mock_get

    mock_user_objects.return_value.execute = mock_user

    service = UserService()
    context = MagicMock()
    request = user_pb2.User(id=1, name="John Doe", email="[email protected]", age=30)

    response = await service.UpdateUser(request, context)

    self.assertEqual(response.message, "User updated")
    mock_get.assert_awaited_once_with(User.id == request.id)

Пытаюсь мокировать на получение пользователя, но мой мок не меняет поведение get и получаем ошибку:

self.assertEqual(response.message, "User updated")
AssertionError: 'User not found!' != 'User updated'
- User not found!
+ User updated

Может я неправильно прописываю мок в данном случаи? Подскажите пожалуйста)


Ответы (0 шт):