如何在 Django 中测试文件响应?
Posted
技术标签:
【中文标题】如何在 Django 中测试文件响应?【英文标题】:How to test file response in Django? 【发布时间】:2017-04-28 13:18:31 【问题描述】:我有一个生成并返回 CSV 文件的 API:
def getCSV():
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename=export.csv'
writer = csv.writer(response, csv.excel)
# ... Write some CSV content ...
return response
当我从浏览器调用它时,它工作正常,但我不知道如何编写一个调用 API 的测试并检查 CSV 内容是否应该是。
如果我:
c = Client()
r = c.get('/my/export/api')
print(r.content)
这只是打印三个字节,很可能在概念上完全错误。
如何在我的测试中获取 CSV 文件响应的内容?
【问题讨论】:
Django Unit Test for testing a file download的可能重复 【参考方案1】:How to read a csv django http response
import csv
import io
def test_csv_export(self):
response = self.client.get('/my/export/api')
self.assertEqual(response.status_code, 200)
content = response.content.decode('utf-8')
cvs_reader = csv.reader(io.StringIO(content))
body = list(cvs_reader)
headers = body.pop(0)
print(body)
print(headers)
【讨论】:
以上是关于如何在 Django 中测试文件响应?的主要内容,如果未能解决你的问题,请参考以下文章