تست صفحۀ اصلی

جنگو

سلام

منظور از تست این است که چک کنیم که برنامه‌نویسیِ تمام صفحات درست باشد و کد 200 را در خروجی ارائه دهد. برای این کار درون فولدر بورد، فایلی با نام py می سازیم.

from django.core.urlresolvers import reverse
from django.test import TestCase

class HomeTests(TestCase):
    def test_home_view_status_code(self):
        url = reverse('home')
        response = self.client.get(url)
        self.assertEquals(response.status_code, 200)

اگر در خروجیِ Status Code مقدار 200 را چاپ کرد یعنی همه چیز درست است!

اگر به هر دلیلی مشکلی در کدزنی وجود داشته باشد؛ کد 500 چاپ می شود که بیانگر Internal Server Error است. فرض کنیم که برنامۀ ما دارای تعداد 100 ویوی مختلف است و با این کار می توانیم در یک مرحله تمام صفحات را تست کنیم و ببینیم که آیا تمام آن‌ها درست کار می کنند یا خیر… برای اجرای آن دستور زیر را وارد می کنیم:

python manage.py test

و خروجی زیر چاپ می شود:

Creating test database for alias 'default'...
System check identified no issues (0 silenced).
.
-------------------------------------------------------
Ran 1 test in 0.041s
OK
Destroying test database for alias 'default'...

یکی دیگر از فواید تست مربوط به این است که آیا URLها به درستی کار می‌کنند یا خیر. در ادامه خواهیم دید که ماژول py می تواند بسیار بزرگ و پیچیده باشد. تنظیمات URLها تمام مربوط به ریجکس‌ها (regex) است.

برای اینکار فایل boards/tests.py را به شکل زیر تغییر می دهیم.

from django.core.urlresolvers import reverse
from django.urls import resolve
from django.test import TestCase
from .views import home

class HomeTests(TestCase):
    def test_home_view_status_code(self):
        url = reverse('home')
        response = self.client.get(url)
        self.assertEquals(response.status_code, 200)

    def test_home_url_resolves_home_view(self):
        view = resolve('/')
        self.assertEquals(view.func, home)

در این فایل از تابع resolves استفاده شده است. جنگو از این تابع برای چک آدرس‌های استفاده‌شده در فایل urls.py استفاده می کند. این تابع مطمئن می شود که آدرسِ / یا همان آدرس ریشه مربوط به ویوی home می‌شود.

دوباره تست می کنیم:

python manage.py test
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
..
--------------------------------------------------
Ran 2 tests in 0.027s
OK
Destroying test database for alias 'default'...

برای مشاهدۀ جزئیات بیشتر می‌توانیم آن را با ویژگیِ verbosity اجرا کنیم:

python manage.py test --verbosity=2

خروجی:

Creating test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...
Operations to perform:
  Synchronize unmigrated apps: messages, staticfiles
  Apply all migrations: admin, auth, boards, contenttypes, sessions
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying boards.0001_initial... OK
  Applying sessions.0001_initial... OK
System check identified no issues (0 silenced).
test_home_url_resolves_home_view (boards.tests.HomeTests) ... ok
test_home_view_status_code (boards.tests.HomeTests) ... ok
-------------------------------------------------------
Ran 2 tests in 0.017s
OK
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...

ترجمۀ اختصاصی توسط تمدن

 

مطلب بعدی: تنظیمات فایل های استاتیک 

مطلب قبلی: تنظیمات Django Template Engine Setup

بدون دیدگاه

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

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

جنگو
پیکربندی گواهینامۀ https

سلام حالا می خواهیم برنامۀ خودمان را با گواهینامۀ https امن کنیم. ساده ترین کار برای انجام آن Let’s Encrypt است. قبل از Let’s Encrypt هرگز تنظیمات https به این راحتی نبوده و مهمتر اینکه اینکار کاملاً رایگان است. آن ها راه حلی به نام certbot را ارائه داده اند …

جنگو
پیکربندی سرویس ایمیل

سلام یکی از بهتر سرویس دهنده های ایمیل Mailgun با قابلیت ۱۲ هزار ایمیل رایگان در ماه است. به صورت رایگان ثبت نام کنید. برای اینکار باید آن را با سرویس دهندۀ دامین خود تنظیم کنید که در این آموزش از tamadon.org استفاده شده است. حالا اولین رکورد DNS را …

جنگو
پیکربندی NGINX

سلام کار بعدی که قرار است انجام شود؛ تنظیمان Nginx به شکلی است که پاسخگویی و سرویس دهی مربوط به فایل های استاتیک را خود انجام دهد و سایر درخواست ها را به Gunicorn بفرستد. یک فایل پیکربندی با نام boards را درون /etc/nginx/sites-available/ و با محتوای زیر اضافه می …

هرگونه استفادۀ از این آموزش به صورت رایگان و با ارجاع به تمدن جایز است.