python - 如何在 Django 中测试文件响应?

标签 python django unit-testing csv testing

我有一个生成并返回 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 文件响应的内容?

最佳答案

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)

关于python - 如何在 Django 中测试文件响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41121785/

相关文章:

python - 无论输入类型如何,如何在Python中执行精确计算?

python - 在 Pandas 数据框中查找特定部分字符串首次出现的索引位置

python - 如何将当前的 pygame 表面转换为更大的表面?

html - django-tables2 每行添加按钮

python - 使用 Python-social-auth 未在管道中设置社交用户

python - 将 2+ 个 mock.patch 合二为一

python - 使用 matplotlib 同时绘制两个直方图时的不透明度误导

mysql - Django 设置存储引擎和默认字符集

python - 如何模拟嵌套函数?

.net - 单元测试和对象的范围 - 如何测试私有(private)/内部方法等?