Как работать с django.http.response.StreamingHttpResponse или объектом map для тест-кейса

У меня есть тестовый пример, в котором ответ StreamingHttpResponse, а не нормальный HttpResponse (он загружает файл csv)

Например, нормальный ответ,

self.assertContains(response, "Testname")
self.assertNotContains(response, "NoMisstake")

Как я могу сделать то же самое для StreamingHttpResponse?

Я поискал и узнал

response.stream_content - это <map object at 0x1052b3610> объект. Это может быть подсказкой???

Вы можете создать текстовую строку из StreamingHttpResponse следующим образом:

str_response = '\n'.join(s.decode('U8') for s in response)

или

str_response = '\n'.join(map(lambda s: s.decode('U8'), iter(response)))

и проверьте содержимое с помощью:

self.assertContains(str_response, "dataincsv")

StreamingHttpResponse - это итерируемый объект, и вы можете итерировать через этот объект любым способом, который вам нужен.

Например, если вы хотите записать в файл, вы можете сделать что-то вроде:

# ...
for line in response:
    some_file.write(line)
# ...
Вернуться на верх