تست صفحۀ اصلی
سلام
منظور از تست این است که چک کنیم که برنامهنویسیِ تمام صفحات درست باشد و کد ۲۰۰ را در خروجی ارائه دهد. برای این کار درون فولدر بورد، فایلی با نام 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 مقدار ۲۰۰ را چاپ کرد یعنی همه چیز درست است!

اگر به هر دلیلی مشکلی در کدزنی وجود داشته باشد؛ کد ۵۰۰ چاپ می شود که بیانگر Internal Server Error است. فرض کنیم که برنامۀ ما دارای تعداد ۱۰۰ ویوی مختلف است و با این کار می توانیم در یک مرحله تمام صفحات را تست کنیم و ببینیم که آیا تمام آنها درست کار می کنند یا خیر… برای اجرای آن دستور زیر را وارد می کنیم:
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

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