用于测试文件下载的Django Unit Test

时间:2011-11-23 14:53:41

标签: django unit-testing

现在我只是检查链接的响应如下:

self.client = Client()
response = self.client.get(url)
self.assertEqual(response.status_code, 200)

是否有Django-ic方法来测试链接以查看文件下载事件是否确实发生?似乎无法在这个主题上找到太多资源。

1 个答案:

答案 0 :(得分:30)

如果网址是为了生成文件而不是“正常”的http响应,则其content-type和/或content-disposition会有所不同。

响应对象基本上是一个字典,所以你可以像

那样
self.assertEquals(
    response.get('Content-Disposition'),
    "attachment; filename=mypic.jpg"
)

更多信息: https://docs.djangoproject.com/en/dev/ref/request-response/#telling-the-browser-to-treat-the-response-as-a-file-attachment

UPD: 如果要读取附加文件的实际内容,可以使用response.content。 zip文件的示例:

try:
    f = io.BytesIO(response.content)
    zipped_file = zipfile.ZipFile(f, 'r')

    self.assertIsNone(zipped_file.testzip())        
    self.assertIn('my_file.txt', zipped_file.namelist())
finally:
    zipped_file.close()
    f.close()