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

assertHTMLEqual

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

Метод принимает два обязательных аргумента: html1 и html2 - строки для сравнения, а также необязательные параметры: msg для пользовательского сообщения об ошибке и msg_prefix для префикса к стандартному сообщению. Сравнение производится на уровне DOM-дерева, что позволяет учитывать структуру документа, а не только текстовое представление.

Синтаксис

self.assertHTMLEqual(html1, html2, msg=None, msg_prefix='')

Пример

Давайте сравним две HTML-строки с одинаковой структурой, но разным форматированием:

from django.test import TestCase class HTMLTest(TestCase): def test_simple_html(self): html1 = '<div class="container"><h1>Title</h1><p>Content</p></div>' html2 = ''' <div class="container"> <h1>Title</h1> <p>Content</p> </div> ''' self.assertHTMLEqual(html1, html2)

Результат выполнения кода:

"Test passed - HTML strings are equivalent"

Пример

Давайте сравним HTML-строки с одинаковым содержимым, но разным порядком атрибутов:

from django.test import TestCase class HTMLAttributeTest(TestCase): def test_attribute_order(self): html1 = '<a href="/home/" class="link">Home</a>' html2 = '<a class="link" href="/home/">Home</a>' self.assertHTMLEqual(html1, html2)

Результат выполнения кода:

"Test passed - HTML strings are equivalent"

Пример

Давайте проверим неэквивалентные HTML-строки с разной структурой:

from django.test import TestCase class HTMLFailTest(TestCase): def test_different_structure(self): html1 = '<div><span>Text</span></div>' html2 = '<div><p>Text</p></div>' self.assertHTMLEqual(html1, html2)

Результат выполнения кода:

"AssertionError: <span>Text</span> != <p>Text</p>"

Пример

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

from django.test import TestCase from django.urls import reverse class ViewHTMLTest(TestCase): def test_view_response(self): response = self.client.get(reverse('home')) expected_html = ''' <!DOCTYPE html> <html> <head><title>Home</title></head> <body> <h1>Welcome</h1> <p>This is the home page</p> </body> </html> ''' self.assertHTMLEqual(response.content.decode(), expected_html)

Результат выполнения кода:

"Test passed - HTML response matches expected structure"

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

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