Как написать получить и опубликовать методы испытаний для представлений в 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)