Тестирование Django

Подскажите пожалуйста правильно ли написан тест. Заранее спасибо

from django.test import Client
from unittest import TestCase
import datetime as dt

# Create your tests here.

# Задание

# Напишите тесты для проверки страницы сайта с тарифными планами.

# Проверьте, что: 
# - главная страница доступна неавторизованному пользователю, а раздел администратора — нет
# - переменная plans есть в контексте шаблона
# - имя шаблона, который вызывается при рендеринге главной страницы — index.html
# - тип переменной plans — это список, состоящий из 3-х элементов, а их тип — словарь
# - на результирующей странице показываются названия тарифных планов и подставляется правильная тема (subject) в ссылку на кнопке "Связаться"
# - в контекстных переменных шаблона присутствует текущий год и он же правильно появляется на странице


class PlansPageTest(TestCase):
    def setUp(self):
        """ Функция где создаём тестового пользователя"""
        self.client = Client()
        self.user = User.objects.create_user(
                                username="sarah",
                                email="[email protected]",
                                password="12345"
                        )
        plans = [
        {
            "name": "Бесплатно",
            "price": "0",
            "options": {"users": 10, "space": 10, "support": "Почтовая рассылка"},
        },
        {
            "name": "Профессиональный",
            "price": "49",
            "options": {"users": 50, "space": 100, "support": "Телефон и email"},
        },
        {
            "name": "Корпоративный",
            "price": "99",
            "options": {"users": 100, "space": 500, "support": "Персональный менеджер"},
        },
    ]

    def testPageCodes(self):
        """ 
        тест для проверки доступа неавторизованного
        пользователя к главной странице и админке 
        """ 
        response_index = self.client.get("index/")
        response_admin = self.client.get("/admin/")
        self.assertEqual(response_index.status_code, 200)
        self.assertEqual(response_admin.status_code, 403)

    def testIndexContext(self):
        """ 
        тест для проверки на наличие
        переменной plans в контексте шаблона
        """ 
        response = self.client.get("index/")
        self.assertEqual(response, plans)

    def testIndexTemplate(self):
        """ 
        имя шаблона, который вызывается при
        рендеринге главной страницы — index.html
        """ 
        response = self.client.get("index")
        self.assertEqual(response, "index")

    def testIndexPlans(self):
        """ 
        тип переменной plans — это список, 
        состоящий из 3-х элементов, а их тип — словарь
        """ 
        response = self.client.get("index")
        self.assertEqual(len(response.context["plans"]), 3)
        self.assertIsInstance(response.context["plans"], dict)

    def testIndexContent(self):
        """
        на результирующей странице показываются названия
        тарифных планов и подставляется правильная тема (subject)
        в ссылку на кнопке "Связаться"
        """
        response = self.client.get('index')
        self.assertIsInstance(response.content['plans'], plans)
        self.assertIn(response.content, f"mailto:[email protected]?subject={plan['name']})
        # Проверяйте вхождение строки f"mailto:[email protected]?subject={plan['name']}"

    def testContextProcessor(self):
        """
        в контекстных переменных шаблона присутствует
        текущий год и он же правильно появляется на странице
        """
        today = dt.datetime.today().year
        response = self.client.get('index')
        self.assertEqual(response.context['year'], today)

И как передать plans в тест если он находится во вьюхе?

def index(request):
    # Доступные тарифные планы
    plans = [
        {
            "name": "Бесплатно",
            "price": "0",
            "options": {"users": 10, "space": 10, "support": "Почтовая рассылка"},
        },
        {
            "name": "Профессиональный",
            "price": "49",
            "options": {"users": 50, "space": 100, "support": "Телефон и email"},
        },
        {
            "name": "Корпоративный",
            "price": "99",
            "options": {"users": 100, "space": 500, "support": "Персональный менеджер"},
        },
    ]

    return render(request, "index.html", {"plans": plans})

Ответы (0 шт):