Метод assertTemplateUsed
Метод assertTemplateUsed используется в тестовых классах
Django для проверки того, что представление (view) при обработке
запроса использует определенный шаблон для рендеринга ответа.
Метод принимает объект ответа и путь к шаблону, а также опционально
параметр count для проверки количества использований шаблона.
Этот метод доступен в классах TestCase и SimpleTestCase.
Синтаксис
self.assertTemplateUsed(response, template_name, count=None)
Параметры метода:
-
response- объект ответа, возвращенный представлением -
template_name- строка с путем к шаблону (например, "blog/article_list.html") -
count- необязательный параметр для проверки конкретного количества использований шаблона
Пример . Проверка использования шаблона
Проверим, что представление для списка статей использует шаблон "blog/article_list.html":
from django.test import TestCase
from django.urls import reverse
class ArticleListViewTest(TestCase):
def test_article_list_view_uses_correct_template(self):
response = self.client.get(reverse('article_list'))
self.assertTemplateUsed(response, 'blog/article_list.html')
Пример . Проверка количества использований шаблона
Проверим, что шаблон используется ровно один раз при рендеринге страницы:
from django.test import TestCase
from django.urls import reverse
class ArticleDetailViewTest(TestCase):
def test_article_detail_view_uses_template_once(self):
response = self.client.get(reverse('article_detail', args=[1]))
self.assertTemplateUsed(response, 'blog/article_detail.html', count=1)
Пример . Проверка отсутствия использования шаблона
Для проверки того, что шаблон не используется, применяется метод assertTemplateNotUsed:
from django.test import TestCase
from django.urls import reverse
class HomePageViewTest(TestCase):
def test_home_page_does_not_use_admin_template(self):
response = self.client.get(reverse('home'))
self.assertTemplateNotUsed(response, 'admin/base_site.html')
Пример . Проверка вложенных шаблонов
Метод также проверяет использование шаблонов, включенных через тег include:
from django.test import TestCase
from django.urls import reverse
class BlogPostViewTest(TestCase):
def test_blog_post_includes_comments_template(self):
response = self.client.get(reverse('blog_post', args=[1]))
self.assertTemplateUsed(response, 'blog/comments.html')
Пример . Использование с контекстом шаблона
Проверка использования шаблона вместе с проверкой контекста данных:
from django.test import TestCase
from django.urls import reverse
from myapp.models import Article
class ArticleViewTest(TestCase):
def setUp(self):
self.article = Article.objects.create(
title="Test Article",
content="Test content"
)
def test_article_view_uses_correct_template_and_context(self):
response = self.client.get(reverse('article_detail', args=[self.article.id]))
self.assertTemplateUsed(response, 'myapp/article_detail.html')
self.assertEqual(response.context['article'].title, "Test Article")
Смотрите также
-
метод
assertTemplateNotUsed,
который проверяет, что шаблон не использовался при рендеринге -
метод
assertContains,
который проверяет наличие определенного текста в ответе -
метод
assertRedirects,
который проверяет перенаправление на указанный URL -
класс
TestCase,
который предоставляет все инструменты для написания тестов в Django