Ответ 1
Эти другие ответы теперь устарели относительно утверждений. Утверждение assertHTMLEqual
(так как Django 1.4) заботится о таких вещах, как игнорирование пробелов и игнорирование порядка атрибутов.
Я пишу модульные тесты для своего приложения Django. Тем не менее, я не знаю, как проверить вывод HTML представления.
Иногда мне может потребоваться проверить, содержит ли определенный элемент определенное значение или сколько из них отображается, или что-то в этом роде. Как я могу делать такие тесты?
Мне нужно решение, которое использует unittest
и django own django.test
.
Я знаю, что могу использовать Selenium или Pyccuracy (который использует Selenium), но тесты Selenium довольно медленны из-за огромных накладных расходов на запуск браузера. Кроме того, модульные тесты работают с готовым пакетом django-coverage.
Эти другие ответы теперь устарели относительно утверждений. Утверждение assertHTMLEqual
(так как Django 1.4) заботится о таких вещах, как игнорирование пробелов и игнорирование порядка атрибутов.
Я всегда находил комбинацию BeautifulSoup и assertContains и assertFormError из TestCase доступные утверждения, чтобы сделать трюк.
Для этого идеально подходит тестовая среда Django.
Проверьте код состояния и содержимое. http://docs.djangoproject.com/en/1.2/topics/testing/#django.test.TestCase.assertContains
Проверьте шаблон. 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' )
Хорошо работает.
Посмотрите на Django с утверждениями - который использует lxml.