Использование mock для создания атрибута 'request' для тестирования метода класса в Django

Я новичок в тестировании и мне нужна помощь в тестировании метода в Django.

Я пробовал тестировать метод с помощью Client() и RequestFactory(), но из-за зависимости метода от других методов, мне кажется, что проще тестировать метод изолированно. Вот тест:

class EmailVerificationViewTest(TestCase):

    def setUp(self):
        User = get_user_model()
        self.view = EmailVerificationCode()
        self.view.time_diff = Mock(return_value=False)
        self.view.user_code = '0000000000'
        self.view.code = '0000000000'

    def test_library(self):
        self.view.check_code()

Проблема в том, что я продолжаю получать ошибку всякий раз, когда вызывается self.request:

    user_record = User.objects.get(pk=self.request.user.pk)
    AttributeError: 'EmailVerificationCode' object has no attribute 'request'

OR (depending whether time_diff is set to True or False)

    messages.info(self.request,
    AttributeError: 'EmailVerificationCode' object has no attribute 'request'

Класс и метод, которые необходимо протестировать:

(login is required through the OTPRequiredMixin)

class EmailVerificationCode(OTPRequiredMixin, FormView):

    def check_code(self):
        try:
            if self.time_diff():
                if str(self.user_code) == str(self.code):
                    user_record = User.objects.get(pk=self.request.user.pk)
                    user_record.is_user_verified = True
                    user_record.save()

                    messages.success(self.request,
                                     _('Your email has been verified - thank you'
                                       ))
                    return redirect(reverse('account:user_profile'))

                else:
                    messages.error(self.request, mark_safe(_(
                        'Sorry, but your code did not match.'
                    )))
                    return redirect(reverse('account:verify_email_code'))

            else:
                messages.info(self.request,
                              mark_safe(_('Sorry, but your code has expired.<br>'
                              )))

                return redirect(reverse('account:verify_email'))

        except (AttributeError, ObjectDoesNotExist):
            messages.warning(self.request,
                             mark_safe(_('We are very sorry, but something went wrong.
                                         'Please try to login again'
                                         )))
            return redirect(reverse('two_factor:login'))

Мой вопрос заключается в том, как мне высмеять атрибут 'self.request', чтобы не вызывались перечисленные выше ошибки AttributeError?

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