Как проверить (используя unittest) вывод HTML представления Django? - PullRequest
14 голосов
/ 28 января 2011

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

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

Я бы хотел решение, которое использует unittest и собственные * django django.test.

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

Ответы [ 4 ]

9 голосов
/ 11 апреля 2014

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

9 голосов
/ 28 января 2011

Я всегда находил комбинацию BeautifulSoup , а также assertContains и assertFormError из доступных подтверждений TestCase , чтобы сделать свое дело.

6 голосов
/ 28 января 2011

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

  1. Проверьте код состояния и содержание. http://docs.djangoproject.com/en/1.2/topics/testing/#django.test.TestCase.assertContains

  2. Проверьте шаблон. http://docs.djangoproject.com/en/1.2/topics/testing/#django.test.TestCase.assertTemplateUsed

Кроме того, это помогает использовать теги 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' )

Прекрасно работает.

1 голос
/ 09 декабря 2013

Посмотрите на Django с утверждениями, в которых используется lxml.

https://django -with-asserts.readthedocs.org / en / latest /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...