Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.test import TestCase, Client
- import datetime as dt
- # Create your tests here.
- # Задание
- # Напишите тесты которые тестируют работу страницы сайта с тарифными планами и проверяют:
- # - Код ответа главной страницы, а раздел администратора наоборот, не доступен
- # - Наличие переменной `plans` в контексте шаблона
- # - Имя шаблона который используется для рендеринга страницы index.html
- # - Тип переменной plans список, состоящий из 3х элементов, а их тип словарь
- # - Присутствует название тарифных планов на результирующей странице, подставляется правильная тема (subject) в ссылке для отправки письма по кнопке Связаться
- # - В контекстных переменных шаблона присутствует текущий год и он же правильно появляется на странице
- class PlansPageTest(TestCase):
- def setUp(self):
- self.client = Client()
- def testPageCodes(self):
- response = self.client.get("/")
- self.assertEqual(response.status_code, 200)
- response = self.client.get("/admin/")
- self.assertEqual(response.status_code, 302)
- def testIndexContext(self):
- response = self.client.get("/")
- self.assertIn("plans", response.context)
- def testIndexTemplate(self):
- response = self.client.get("/")
- self.assertEqual("index.html", response.templates[0].name)
- def testIndexPlans(self):
- response = self.client.get("/")
- plans = response.context["plans"]
- self.assertIsInstance(plans, list)
- self.assertEqual(len(plans), 3)
- for plan in plans:
- self.assertIsInstance(plan, dict)
- def testIndexContent(self):
- response = self.client.get("/")
- plans = response.context["plans"]
- for plan in plans:
- self.assertContains(response, plan["name"])
- self.assertContains(
- response, f"mailto:order@company.site?subject={plan['name']}"
- )
- def testContextProcessor(self):
- response = self.client.get("/")
- self.assertIn("year", response.context)
- today = dt.datetime.today().year
- self.assertEqual(response.context["year"], today)
- self.assertContains(response, today)
Add Comment
Please, Sign In to add comment