测试Django FileResponse

时间:2019-04-16 12:55:20

标签: python django django-views

我有一个返回文件的Django视图。 FileResponse是为此目的而构建的。但是,我不知道该如何测试。

现在我使用HttpResponse并进行如下测试:

response = client.get(url)
io = io = BytesIO(response.content)

io对象现在可以用于进一步的测试。

但是,如果我尝试使用FileResponse(它是从StreamingHttpResponse派生的,因此使用streaming_content而不是content进行以下操作,则会出现以下异常:< / p>

TypeError: a bytes-like object is required, not 'map'

如果我像这样将map对象投射到bytes

response = client.get(url)
io = io = BytesIO(bytes(response.streaming_content))

我得到另一个例外:TypeError: 'bytes' object cannot be interpreted as an integer

如何从BytesIO获取FileResponse.streaming_content对象?

1 个答案:

答案 0 :(得分:0)

streaming_content是可迭代的,而不是字节串,因此您必须将它们加入。

fileres = bytes("test", 'utf-8')
stream = b''.join(response.streaming_content)
assert stream == fileres