相关疑难解决方法(0)

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

我有一个生成并返回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
Run Code Online (Sandbox Code Playgroud)

当我从浏览器调用它时,这工作正常,但我无法弄清楚如何编写调用API的测试并检查CSV内容是否应该是什么.

如果我:

c = Client()
r = c.get('/my/export/api')
print(r.content)
Run Code Online (Sandbox Code Playgroud)

这只是打印三个字节,很可能在概念上完全错误.

如何在测试中获取CSV文件响应的内容?

python csv testing django unit-testing

6
推荐指数
1
解决办法
2137
查看次数

django 测试文件下载 - “ValueError: I/O operation on closed file”

我有一个提供文件下载的视图代码,它在浏览器中运行良好。现在我正在尝试使用内部 django Client.get 为它编写一个测试:

    response = self.client.get("/compile-book/", {'id': book.id})
    self.assertEqual(response.status_code, 200)
    self.assertEquals(response.get('Content-Disposition'), 
                      "attachment; filename=book.zip")
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。现在我想测试下载的文件是否是我希望它下载的文件。所以我开始说:

    f = cStringIO.StringIO(response.content)
Run Code Online (Sandbox Code Playgroud)

现在我的测试运行器响应:

Traceback (most recent call last):
  File ".../tests.py", line 154, in test_download
    f = cStringIO.StringIO(response.content)
  File "/home/epub/projects/epub-env/lib/python2.7/site-packages/django/http/response.py", line 282, in content
    self._consume_content()
  File "/home/epub/projects/epub-env/lib/python2.7/site-packages/django/http/response.py", line 278, in _consume_content
    self.content = b''.join(self.make_bytes(e) for e in self._container)   
  File "/home/epub/projects/epub-env/lib/python2.7/site-packages/django/http/response.py", line 278, in <genexpr>
    self.content = b''.join(self.make_bytes(e) for e in self._container)   
  File "/usr/lib/python2.7/wsgiref/util.py", line 30, in next 
    data = self.filelike.read(self.blksize) 
ValueError: I/O operation on closed …
Run Code Online (Sandbox Code Playgroud)

python django unit-testing

4
推荐指数
1
解决办法
2196
查看次数

标签 统计

django ×2

python ×2

unit-testing ×2

csv ×1

testing ×1