Тест Django: как получить строку html из объекта HTTPResponseRedirect - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть тест, в котором представление перенаправляет с помощью HttpRepsonseRedirect ().В моем тесте я передаю dict запросу POST, который проходит через этот HttpResponseRedirect.

data = {...data...}
response = self.client.post(url, data)

Как проверить, есть ли строки в ответном HTML?Я не могу сделать:

self.assertContains(response, 'my_string')

или

self.assertIn(response, 'my_string')

Есть ли способ получить доступ к HTML в виде строки из этого ответа?

Ответы [ 2 ]

0 голосов
/ 07 августа 2019

Django предоставляет функцию подтверждения , TestCase.assertInHtml(needle, haystack), которую вы можете использовать, чтобы утверждать, что данный needle (ваша HTML-строка) находится в haystack (HTML из объекта ответа). Помните, что содержимое HTML HttpResponse предоставляется в виде байтовой строки в атрибуте content объекта ответа, поэтому вам нужно будет декодировать его следующим образом:

self.assertInHtml('my_string', response.content.decode())
0 голосов
/ 15 ноября 2018

Вы можете передать аргумент follow=True тестовому клиенту, чтобы он выполнял перенаправления.Затем вы можете использовать assertContains для проверки ожидаемого содержимого.

data = {...data...}
response = self.client.post(url, data, follow=True)
self.assertContains(response, 'my_string')
...