Использование 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?