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