تست Login Required

سلام

مثل همیشه نوبت نوشتن فایل تست مربوط به دکوراتور login_required@ شده اما قبل از آن می خواهیم فایل boards/tests/test_views.py را اندکی دستکاری کنیم.

می خواهیم این فایل را به سه فایل جداگانه تقسیم کنیم.

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

0 پاسخ

دیدگاه خود را ثبت کنید

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *