Как проверить (используя unittest) вывод HTML представления Django?

Я пишу модульные тесты для своего приложения Django. Тем не менее, я не знаю, как проверить вывод HTML представления.

Иногда мне может потребоваться проверить, содержит ли определенный элемент определенное значение или сколько из них отображается, или что-то в этом роде. Как я могу делать такие тесты?

Мне нужно решение, которое использует unittest и django own django.test.

Я знаю, что могу использовать Selenium или Pyccuracy (который использует Selenium), но тесты Selenium довольно медленны из-за огромных накладных расходов на запуск браузера. Кроме того, модульные тесты работают с готовым пакетом django-coverage.

Ответ 1

Эти другие ответы теперь устарели относительно утверждений. Утверждение assertHTMLEqual (так как Django 1.4) заботится о таких вещах, как игнорирование пробелов и игнорирование порядка атрибутов.

Ответ 3

Для этого идеально подходит тестовая среда Django.

Кроме того, это помогает использовать теги id="something" в вашем HTML, чтобы облегчить поиск вещей при модульном тестировании. У нас такие тесты.

def should_find_something( self ):
    response= self.client.get( "/path/to/resource/pk/" )
    self.assertContains( response, '<td id="pk">the pk string</td>', status_code=200 )
    self.assertTemplateUsed( response, 'appropriate_page.html' )

Хорошо работает.