我有一个使用Django test client访问网页的Django测试。
在其中一个测试中,服务器将ZIP文件作为附件返回。我使用以下代码访问ZIP文件的内容:
zip_content = StringIO(response.content)
zip = ZipFile(zip_content)
这会导致以下弃用警告:
D:/ Developments / Archaeology / DB / ArtefactDatabase / Webserver \ importexport \ tests \ test_import.py:1:DeprecationWarning:不推荐访问流式响应中的
content
属性。请改用streaming_content
属性。
response.streaming_content
会返回某种类型的地图,这绝对不是ZipFile
所需的文件类对象。如何使用streaming_content
属性?
顺便说一句,我只是在将response.content
传递给StringIO
时才会收到弃用警告,当我访问普通HTML页面的response.content时,没有任何警告。
答案 0 :(得分:6)
使用Python 3.4。
with String:
zip_content = io.StringIO("".join(response.streaming_content))
zip = ZipFile(zip_content)
带字节:
zip_content = io.BytesIO(b"".join(response.streaming_content))
zip = ZipFile(zip_content)
在https://github.com/sio2project/oioioi/blob/master/oioioi/filetracker/tests.py
的TestStreamingMixin中找到的解决方案另见: https://docs.djangoproject.com/en/1.7/ref/request-response/
您可能希望通过检查response.streaming
(布尔值)来测试响应是否为流。
答案 1 :(得分:-1)
您应该更改测试方法。 response.streaming_content
完全符合其目的。只是测试是调用下载是好的。
如果要测试文件生成/完整性方法,则需要单独测试其功能。如果您的文件是ZIP或CSV到Django测试无关紧要,但是如果你的调用没问题。