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

Метод assertInHTML

Метод assertInHTML применяется к экземпляру класса TestCase и проверяет, содержится ли переданный HTML-фрагмент в полученном ответе от клиента. Этот метод учитывает структуру HTML-документа, игнорируя при этом пробелы, переносы строк и другие незначительные различия в форматировании. В случае отсутствия фрагмента или несовпадения структуры, метод выбрасывает исключение с подробным сообщением об ошибке.

Метод принимает два обязательных аргумента: html - HTML-фрагмент, который нужно найти, и response - объект ответа от клиента. Третий необязательный аргумент msg_prefix позволяет добавить префикс к сообщению об ошибке для лучшей идентификации теста. Метод полезен для проверки наличия конкретных элементов на странице, например, форм, кнопок, заголовков или сообщений об ошибках.

Синтаксис

self.assertInHTML(html, response, msg_prefix=None)

Пример . С проверкой заголовка

Проверим, что страница содержит заголовок первого уровня с текстом "Welcome to Blog":

from django.test import TestCase from django.urls import reverse class HomePageTest(TestCase): def test_homepage_contains_heading(self): response = self.client.get(reverse('home')) self.assertInHTML('<h1>Welcome to Blog</h1>', response)

Пример . С проверкой ссылки

Проверим наличие ссылки для перехода на страницу входа с определенными атрибутами:

from django.test import TestCase from django.urls import reverse class NavigationTest(TestCase): def test_nav_has_login_link(self): response = self.client.get(reverse('home')) login_link = '<a href="/login/" class="nav-link">Login</a>' self.assertInHTML(login_link, response)

Пример . С проверкой формы

Проверим наличие формы с определенными полями и кнопкой отправки:

from django.test import TestCase from django.urls import reverse class ContactFormTest(TestCase): def test_contact_page_has_form(self): response = self.client.get(reverse('contact')) form_html = ''' <form method="post" action="/contact/"> <input type="text" name="name" placeholder="Your name"> <input type="email" name="email" placeholder="Your email"> <textarea name="message" placeholder="Your message"></textarea> <button type="submit">Send message</button> </form> ''' self.assertInHTML(form_html, response)

Пример . С проверкой ошибки валидации

Проверим, что при некорректной отправке формы на странице появляется сообщение об ошибке:

from django.test import TestCase from django.urls import reverse class RegistrationTest(TestCase): def test_invalid_registration_shows_error(self): data = {'username': '', 'password': '123'} response = self.client.post(reverse('register'), data) error_message = '<ul class="errorlist"><li>This field is required.</li></ul>' self.assertInHTML(error_message, response)

Пример . С проверкой в контексте

Проверим, что страница содержит несколько элементов, сгенерированных из контекста шаблона:

from django.test import TestCase from django.urls import reverse from myapp.models import Article class ArticleListTest(TestCase): @classmethod def setUpTestData(cls): cls.article1 = Article.objects.create(title='First article') cls.article2 = Article.objects.create(title='Second article') def test_article_list_contains_articles(self): response = self.client.get(reverse('article_list')) self.assertInHTML('<li>First article</li>', response) self.assertInHTML('<li>Second article</li>', response)

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

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