Метод assertTemplateUsed

Метод assertTemplateUsed используется в тестовых классах Django для проверки того, что представление (view) при обработке запроса использует определенный шаблон для рендеринга ответа. Метод принимает объект ответа и путь к шаблону, а также опционально параметр count для проверки количества использований шаблона. Этот метод доступен в классах TestCase и SimpleTestCase.

Синтаксис

pythonself.assertTemplateUsed(response, template_name, count=None)

Параметры метода:

Пример . Проверка использования шаблона

Проверим, что представление для списка статей использует шаблон "blog/article_list.html":

pythonfrom 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')

Пример . Проверка количества использований шаблона

Проверим, что шаблон используется ровно один раз при рендеринге страницы:

pythonfrom 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:

pythonfrom 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:

pythonfrom 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')

Пример . Использование с контекстом шаблона

Проверка использования шаблона вместе с проверкой контекста данных:

pythonfrom 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