Как написать получить и опубликовать методы испытаний для представлений в Django?

Я новичок в тестировании Django и пытаюсь написать тестовые функции для представлений, но я не понимаю всего этого, я видел много примеров, но это кажется трудным, мне нужен пример для чего-то Я написал, чтобы получить идею. вот функция, которую я хочу проверить свой пост и получить:

    def ForgetPasswordRegistry(self, request):
    forgetpassword = True
    if request.method == 'GET':
        if 'UserID' in request.session:
            forgetpassword = False
        return request, forgetpassword
    elif request.method == 'POST':
        email = request.POST['email']
        if self.IsUserExist(email):
            forget = models.ForgetPasswordRegistry()
            forget.UserID = self.GetUser(email)
            forget.Access = 1
            session = random.randint(999999999999999, 9999999999999999999999999999999999)
            forget.Session = str(session)
            link = 'http://127.0.0.1:8000/home/resetpassword/' + forget.Session
            self.SendEmail('Reset-Password', link, [forget.UserID.Email])
            forget.save()
            FeedBack = ' Check Your Mail You Got A Recovery Mail'
            AlertType = 'alert-success'
            return request, AlertType, None, FeedBack, None, None
        else:
            AlertType = 'alert-danger'
            ModalFeedBack = 'This Email Dose Not Exist'
            EmailErrors = 'This Email Dose Not Exist'
            return request, AlertType, forgetpassword, None, EmailErrors, ModalFeedBack

2 ответа

Решение

Не позволяйте концепции взглядов сбить вас с толку! По сути, есть функция python, для которой вам нужно выполнить определенные условия.

Похоже, есть 4 основные ветви:

  • Получить не в сессии
  • Получить в сессии
  • POST существует
  • POST не существует

так что, вероятно, должно быть как минимум 4 разных теста. Я выложу первый, потому что это довольно просто:

def ForgetPasswordRegistry(self, request):
forgetpassword = True
if request.method == 'GET':
    if 'UserID' in request.session:
        forgetpassword = False
    return request, forgetpassword

def test_forget_get_user_id_in_session(self):
    request = Mock(session={'UserID': 'here'}, method='GET')
    # instantiate your view class
    yourview = YourView()
    sefl.assertEqual(yourview.ForgetPasswordRegistry(request), (request, False))

Ветвь почтового пользователя существует немного сложнее, потому что в тесте нужно учесть больше вещей и потенциально обеспечить реализацию заглушек для:

  • SendEmail
  • GetUser
  • models.ForgetPasswordRegistry ()

Используйте тестовый клиент Django: https://docs.djangoproject.com/en/1.11/topics/testing/tools/

Пример:

from django.test import Client, TestCase


class ViewTestCase(TestCase):
    def test_post_creation(self):
        c = Client()  # instantiate the Django test client
        response = c.get('/forgetpassword/')
        self.assertEqual(response.status, 200)
Другие вопросы по тегам