РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
761 of 818 menu

Метод assertContains

Метод assertContains применяется к экземпляру класса TestCase и проверяет, содержит ли ответ клиента переданное содержимое. Метод принимает обязательные параметры: объект ответа и искомую строку или байтовую строку. Также можно указать количество совпадений, статус-код и другие параметры для более точной проверки. Метод используется для тестирования рендеринга шаблонов и генерации контента представлениями.

Синтаксис

self.assertContains(response, text, count=None, status_code=200, msg_prefix='', html=False)

Параметры

Метод принимает следующие параметры:

response - объект ответа, возвращенный клиентом.

text - строка или байтовая строка, которую нужно найти в ответе.

count - ожидаемое количество совпадений. Если параметр не указан, проверяется наличие хотя бы одного совпадения.

status_code - ожидаемый статус-код ответа. По умолчанию равен 200.

msg_prefix - строка, добавляемая к сообщению об ошибке.

html - если установлен в True, выполняет сравнение как HTML, игнорируя пробелы и регистр тегов.

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

Давайте протестируем представление, которое возвращает список статей в HTML:

from django.test import TestCase from django.urls import reverse from myapp.models import Article class ArticleListViewTest(TestCase): def setUp(self): Article.objects.create(title="First Article", content="Content 1") Article.objects.create(title="Second Article", content="Content 2") def test_article_list_contains_titles(self): res = self.client.get(reverse('article_list')) self.assertContains(res, "First Article") self.assertContains(res, "Second Article")

Пример . С подсчетом совпадений

Проверим, что определенное слово встречается в ответе указанное количество раз:

from django.test import TestCase from django.urls import reverse from myapp.models import Article class ArticleContentTest(TestCase): def setUp(self): Article.objects.create(title="Python Tutorial", content="Python is great") Article.objects.create(title="Django Guide", content="Django is also great") def test_content_contains_python_twice(self): res = self.client.get(reverse('article_list')) self.assertContains(res, "Python", count=2)

Пример . С проверкой HTML-содержимого

При использовании параметра html=True метод игнорирует различия в пробелах и регистре тегов:

from django.test import TestCase from django.urls import reverse class HTMLTest(TestCase): def test_html_content_ignores_spaces(self): res = self.client.get(reverse('home')) self.assertContains(res, "<h1> Welcome</h1>", html=True)

Смотрите также

  • метод assertNotContains,
    который проверяет отсутствие содержимого в ответе
  • метод assertRedirects,
    который проверяет редиректы в ответе
  • метод assertTemplateUsed,
    который проверяет использование шаблона
  • метод assertInHTML,
    который проверяет наличие HTML-фрагмента в ответе
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить