Why aren't my mocked methods being called?

A user can have many surveys. And I generate a report for the user by first accessing the user's most recent survey. I'm trying to mock out that function and just return a survey id = 1. But my mocked function is never being called.

Here's the code:

The User Model

@python_2_unicode_compatible
    class User(AbstractUser):

    ...
        name = models.CharField(_('Name of User'), blank=False, max_length=255)

    ...

        ##### this is the function I want to mock #####
        def get_survey(self):
            print("get real survey")
            return self.surveys.all().order_by('-updated_at')[0]

        def get_surveyid(self):
            return self.get_survey().surveyid

The Survey Model

  class Survey(models.Model):

        '''The Django Survey Model'''

        surveyid = models.IntegerField(_('Survey ID'), primary_key=True, default=0)
        surveyname = models.CharField(_('Name of Survey'), blank=True,
            max_length=255, default='surveyname')
        issurveyactive = models.BooleanField(_('Is Survey Active'), default=True)
        user = models.ForeignKey(user_models.User,
                related_name='surveys',
                on_delete=models.DO_NOTHING,)

        . . .

The Report View

class UserReportView(LoginRequiredMixin, TemplateView):
        model = User
        template_name = 'users/reports/rptemplate/report.html'
        def get_context_data(self, **kwargs):
            theuser = self.request.user
            thesurvey = theuser.get_survey().surveyid
            reportdata = theuser.get_survey().createreport()

            ...

            return context

The Test

class BaseUserTestCase(TestCase):

    def setUp(self):
        self.user = self.make_user()
        self.factory = RequestFactory()



def mock_user_get_survey():
    mock_instance = mock.Mock(spec=Survey)
    mock_instance.surveyid = 1
    print("mock_user_get_survey")
    #theuser.get_survey().createreport()

class TestUserReportView(BaseUserTestCase):
    @patch('pulsemanager.users.models.User.get_survey', side_effect=mock_user_get_survey)


    def setUp(self, arg2, arg3):

        # call BaseUserTestCase.setUp()
        super(TestUserReportView, self).setUp()
        # Instantiate the view directly. Never do this outside a test!
        self.view = UserReportView()
        # Generate a fake request
        request = self.factory.get('/fake-url')
        # Attach the user to the request
        request.user = self.user
        # Attach the request to the view
        self.view.request = request

    def test_get_context_data(self):
        theContext = self.view.get_context_data()
        survey_id = theContext['sid']
        self.assertEqual(survey_id, 1)

EDIT

I tried following the suggested post and made the following changes. But now none of the methods in my class are being called. Not sure what I'm dong wrong?

def mock_user_get_survey():
    survey = mock.Mock(spec=Survey)
    survey.surveyid = 1
    print("mock_user_get_survey")
    return survey

@patch('pulsemanager.users.views.User.get_survey', new = mock_user_get_survey)

class TestUserReportView(BaseUserTestCase):


    def setUp(self, mock_user_get_survey):

        print("****test user report****")

        # call BaseUserTestCase.setUp()
        super(TestUserReportView, self).setUp()
        # Instantiate the view directly. Never do this outside a test!
        self.view = UserReportView()
        # Generate a fake request
        request = self.factory.get('/fake-url')
        # Attach the user to the request
        request.user = self.user
        # Attach the request to the view
        self.view.request = request

    def test_should_fail(self, mock_user_get_survey):
        assert 1 > 2

    def test_get_context_data(self, mock_user_get_survey):
        theContext = self.view.get_context_data()
        survey_id = theContext['sid']
        self.assertEqual(survey_id, 1)
        total_responses = theContext['responses']
        self.assertEqual(total_responses, 1)

EDIT 2

What I was trying to say is NONE of the functions in Class TestUserReportView are being executed since moving the decorators outside of the class.

Here's the entire view class:

class UserReportView(LoginRequiredMixin, TemplateView):
    model = User
    template_name = 'users/reports/rptemplate/report.html'
    def get_context_data(self, **kwargs):
        theuser = self.request.user
        thesurvey = theuser.get_survey().surveyid
        reportdata = theuser.get_survey().createreport()
        thechurch = theuser.churchname

        if not reportdata.empty:
            context = {'sid': thesurvey,
            'church_name': thechurch,
            'report_date': str(datetime.date.today()),
            'responses': int(reportdata['responses']),
            'img_vision': "{surveyid}_vision.png".format(surveyid = thesurvey),
            'img_leadership': "{surveyid}_leadership.png".format(surveyid = thesurvey),
            'img_mobilization': "{surveyid}_mobilization.png".format(surveyid = thesurvey),
            'img_stewardship': "{surveyid}_stewardship.png".format(surveyid = thesurvey),
            'img_context': "{surveyid}_context.png".format(surveyid = thesurvey),
            'img_evangelism': "{surveyid}_evangelism.png".format(surveyid = thesurvey),
            'img_discipleship': "{surveyid}_discipleship.png".format(surveyid = thesurvey),
            'img_service': "{surveyid}_service.png".format(surveyid = thesurvey),
            'img_fellowship': "{surveyid}_fellowship.png".format(surveyid = thesurvey),
            'img_worship': "{surveyid}_worship.png".format(surveyid = thesurvey),
            'img_category': "{surveyid}_category.png".format(surveyid = thesurvey),
            'img_radar': "{surveyid}_radar.png".format(surveyid = thesurvey)
            }
        else:
            context = {'sid': thesurvey,
            'church_name': thechurch,
            'report_date': str(datetime.date.today()),
            'responses': 0,
            'img_vision': "nodata.jpeg",
            'img_leadership': "nodata.jpeg",
            'img_mobilization': "nodata.jpeg",
            'img_stewardship': "nodata.jpeg",
            'img_context': "nodata.jpeg",
            'img_evangelism': "nodata.jpeg",
            'img_discipleship': "nodata.jpeg",
            'img_service': "nodata.jpeg",
            'img_fellowship': "nodata.jpeg",
            'img_worship': "nodata.jpeg",
            'img_category': "nodata.jpeg",
            'img_radar': "nodata.jpeg"
            }

        return context

And here's my entire test_views:

from django.test import RequestFactory

from test_plus.test import TestCase

from unittest import mock
from unittest.mock import patch
from contextlib import contextmanager

import factory
from django.db.models import signals

from pulsemanager.users.views import UserRedirectView
from pulsemanager.users.views import UserUpdateView
from pulsemanager.users.views import UserReportView


# from pulsemanager.surveys   import models as survey_models
# from pulsemanager.users     import models as user_models

class BaseUserTestCase(TestCase):

    def setUp(self):
        self.user = self.make_user()
        self.factory = RequestFactory()


class TestUserRedirectView(BaseUserTestCase):

    def test_get_redirect_url(self):
        # Instantiate the view directly. Never do this outside a test!
        view = UserRedirectView()
        # Generate a fake request
        request = self.factory.get('/fake-url')
        # Attach the user to the request
        request.user = self.user
        # Attach the request to the view
        view.request = request
        # Expect: '/users/testuser/', as that is the default username for
        #   self.make_user()
        self.assertEqual(
            view.get_redirect_url(),
            '/users/testuser/'
        )


class TestUserUpdateView(BaseUserTestCase):

    def setUp(self):
        # call BaseUserTestCase.setUp()
        super(TestUserUpdateView, self).setUp()
        # Instantiate the view directly. Never do this outside a test!
        self.view = UserUpdateView()
        # Generate a fake request
        request = self.factory.get('/fake-url')
        # Attach the user to the request
        request.user = self.user
        # Attach the request to the view
        self.view.request = request

    def test_get_success_url(self):
        # Expect: '/users/testuser/', as that is the default username for
        #   self.make_user()
        self.assertEqual(
            self.view.get_success_url(),
            '/users/testuser/'
        )

    def test_get_object(self):
        # Expect: self.user, as that is the request's user object
        self.assertEqual(
            self.view.get_object(),
            self.user
        )

#@contextmanager
def mock_user_get_survey():
    survey = mock.Mock(spec=Survey)
    survey.surveyid = 1
    print("mock_user_get_survey")
    return survey
    #theuser.get_survey().createreport()

# def mock_user_get_surveyid():
#     return 1

def mock_get_ls_data_empty(self):
    data = ({'status': 'No Data, could not get max id.'}, None) #empty

    print("mock_get_ls_data_empty")
    return data

def mock_get_ls_data(self):

    data = ('77u/ImlkIjsic3VibWl0ZGF0ZSI7Imxhc3RwYWdlIjsic3RhcnRsYW5ndWFnZSI7InNlZWQiOyJBZ2VHcm91cCI7IkdlbmRlciI7IlJhY2UiOyJNaW5pc3RyeVJvbGUiOyJxMVt2aXMxXSI7InExW3ZpczJdIjsicTFbdmlzM10iOyJxMVt2aXM0XSI7InExW3ZpczVdIjsicTFbdmlzNl0iOyJxMVt2aXM3XSI7InEyW2xlYTFdIjsicTJbbGVhMl0iOyJxMltsZWEzXSI7InEyW2xlYTRdIjsicTJbbGVhNV0iOyJxMltsZWE2XSI7InEyW2xlYTddIjsicTNbYm9kMV0iOyJxM1tib2QyXSI7InEzW2JvZDNdIjsicTNbYm9kNF0iOyJxM1tib2Q1XSI7InEzW2JvZDZdIjsicTNbYm9kN10iOyJxNFtyZXMxXSI7InE0W3JlczJdIjsicTRbcmVzM10iOyJxNFtyZXM0XSI7InE0W3JlczVdIjsicTRbcmVzNl0iOyJxNFtyZXM3XSI7InE1W2NvbjFdIjsicTVbY29uMl0iOyJxNVtjb24zXSI7InE1W2NvbjRdIjsicTVbY29uNV0iOyJxNVtjb242XSI7InE1W2NvbjddIjsicTZbZXZhMV0iOyJxNltldmEyXSI7InE2W2V2YTNdIjsicTZbZXZhNF0iOyJxNltldmE1XSI7InE2W2V2YTZdIjsicTZbZXZhN10iOyJxN1tlZHUxXSI7InE3W2VkdTJdIjsicTdbZWR1M10iOyJxN1tlZHU0XSI7InE3W2VkdTVdIjsicTdbZWR1Nl0iOyJxN1tlZHU3XSI7InE4W3NlcjFdIjsicThbc2VyMl0iOyJxOFtzZXIzXSI7InE4W3NlcjRdIjsicThbc2VyNV0iOyJxOFtzZXI2XSI7InE4W3NlcjddIjsicTlbZmVsMV0iOyJxOVtmZWwyXSI7InE5W2ZlbDNdIjsicTlbZmVsNF0iOyJxOVtmZWw1XSI7InE5W2ZlbDZdIjsicTlbZmVsN10iOyJxMTBbd29yMV0iOyJxMTBbd29yMl0iOyJxMTBbd29yM10iOyJxMTBbd29yNF0iOyJxMTBbd29yNV0iOyJxMTBbd29yNl0iOyJxMTBbd29yN10iDQoiMjU0MyI7IjE5ODAtMDEtMDEgMDA6MDA6MDAiOyIxMSI7ImVuIjsiMTQxNzgyMDExNCI7IjQiOyIyIjsiNyI7IjIiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIjsiMSI7IjEiOyIxIg0KDQo=', None)

    print("mock_get_ls_data")
    return data


#@patch('pulsemanager.users.models.User.get_survey', side_effect=mock_user_get_survey)
@patch('pulsemanager.users.views.User.get_survey', new = mock_user_get_survey)
#@patch('pulsemanager.users.models.User.get_surveyid', side_effect=mock_user_get_surveyid)
#@patch('pulsemanager.surveys.models.Survey._get_ls_data', side_effect=['mock_get_ls_data_empty','mock_get_ls_data'])
@patch('pulsemanager.surveys.models.Survey._get_ls_data', new=['mock_get_ls_data_empty','mock_get_ls_data'])

@factory.django.mute_signals(signals.post_save) #don't call the after save signal
class TestUserReportView(BaseUserTestCase):


    def setUp(self, mock_user_get_survey):

        print("****test user report****")

        # call BaseUserTestCase.setUp()
        super(TestUserReportView, self).setUp()
        # Instantiate the view directly. Never do this outside a test!
        self.view = UserReportView()
        # Generate a fake request
        request = self.factory.get('/fake-url')
        # Attach the user to the request
        request.user = self.user
        # Attach the request to the view
        self.view.request = request

    def test_should_fail(self, mock_user_get_survey):
        assert 1 > 2

    def test_get_context_data(self, mock_user_get_survey):
        theContext = self.view.get_context_data()
        survey_id = theContext['sid']
        self.assertEqual(survey_id, 1)
        total_responses = theContext['responses']
        self.assertEqual(total_responses, 1)

    def test_get_context_data_emptry(self, mock_user_get_survey):
        theContext = self.view.get_context_data()
        survey_id = theContext['sid']
        self.assertEqual(survey_id, 1)
        total_responses = theContext['responses']
        self.assertEqual(total_responses, 0)