I have a Django test that accesses a web page using the Django test client.
In one of the tests, the server returns a ZIP file as an attachment. I access the content of the ZIP file with the following code:
zip_content = StringIO(response.content)
zip = ZipFile(zip_content)
This causes the following deprecation warning:
D:/Developments/Archaeology/DB/ArtefactDatabase/Webserver\importexport\tests\test_import.py:1: DeprecationWarning: Accessing the
content
attribute on a streaming response is deprecated. Use thestreaming_content
attribute instead.`
response.streaming_content
returns some sort of map, which is definitely not a file-like object that's required for ZipFile
. How can I use the streaming_content
attribute for this?
Incidentally, I only get the deprecation warning when passing response.content
to a StringIO
, when I access the response.content of an ordinary HTML page, there's no warning.
Using Python 3.4.
with String:
zip_content = io.StringIO("".join(response.streaming_content))
zip = ZipFile(zip_content)
with Bytes:
zip_content = io.BytesIO(b"".join(response.streaming_content))
zip = ZipFile(zip_content)
Solution found in TestStreamingMixin of https://github.com/sio2project/oioioi/blob/master/oioioi/filetracker/tests.py
See also: https://docs.djangoproject.com/en/1.7/ref/request-response/
You might want to test whether the response is a stream by checking response.streaming
(boolean).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With