تست Login Required
سلام
مثل همیشه نوبت نوشتن فایل تست مربوط به دکوراتور login_required@ شده اما قبل از آن می خواهیم فایل boards/tests/test_views.py را اندکی دستکاری کنیم.
می خواهیم این فایل را به سه فایل جداگانه تقسیم کنیم.
- test_view_home.py شامل کلاس HomeTests (مشاهده کد کامل)
- test_view_board_topics.py شامل کلاس BoardTopicsTests (مشاهده کد کامل)
- test_view_new_topic.py شامل کلاس NewTopicTests (مشاهده کد کامل)
myproject/ |-- myproject/ | |-- accounts/ | |-- boards/ | | |-- migrations/ | | |-- templatetags/ | | |-- tests/ | | | |-- __init__.py | | | |-- test_templatetags.py | | | |-- test_view_home.py <-- here | | | |-- test_view_board_topics.py <-- here | | | +-- test_view_new_topic.py <-- and here | | |-- __init__.py | | |-- admin.py | | |-- apps.py | | |-- models.py | | +-- views.py | |-- myproject/ | |-- static/ | |-- templates/ | |-- db.sqlite3 | +-- manage.py +-- venv/
فایل تست را اجرا می کنیم تا از همه چیز خاطر جمع شویم.
سپس یک نمونه آزمایشی را به test_view_new_topic.py اضافه می کنیم تا از کارکرد login_required@ مطمئن شویم.
boards/tests/test_view_new_topic.py (مشاهده کد کامل)
from django.test import TestCase
from django.urls import reverse
from ..models import Board
class LoginRequiredNewTopicTests(TestCase):
def setUp(self):
Board.objects.create(name='Django', description='Django board.')
self.url = reverse('new_topic', kwargs={'pk': 1})
self.response = self.client.get(self.url)
def test_redirection(self):
login_url = reverse('login')
self.assertRedirects(self.response, '{login_url}?next={url}'.format(login_url=login_url, url=self.url))
در مورد آزمایشی بالا سعی کردیم تا یک درخواست را به new topic و بدون ورود کاربر ارسال کنیم و همانگونه که انتظار می رود درخواست ما به ویوی لاگین انتقال می یابد.
ترجمۀ اختصاصی توسط تمدن
مطلب بعدی: دسترسی به کاربر معتبر
مطلب قبلی: ویوهای محافظت شده | Protecting Views

دیدگاه خود را ثبت کنید
تمایل دارید در گفتگو شرکت کنید؟نظری بدهید!