Как работать с 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)
# ...