【发布时间】:2017-09-29 19:56:18
【问题描述】:
我写了一个简单的单元测试来测试 django 视图。视图将与请求对象一起传递的图像文件上传到 S3。
代码:
url = 'view-endpoint-url'
myfile = open('pathtoimage')
payload = {'data1': 'xyz', 'file': myfile}
response = client.post(url, payload, MULTIPART_CONTENT)
此时调用被测视图时:图像文件按预期存储在 InMemoryUploadedFile 类型的 request.FILE['file'] 中。
当视图尝试打开(request.FILE['file']) 和 read() 我得到一个
IOError no such file or directory
我很困惑,因为图像文件确实存在于该位置,但由于某种原因它没有被拾取。我使用 curl 命令进行了类似的测试,一切正常。
是否有任何解决方法可以帮助我进行单元测试?
更新:
基本上我正在尝试获取 InMemoryUploadedFile 的文件路径来对视图进行单元测试
解决方案
通过在同一被测视图中读取文件而不是使用其他实用程序方法读取 InMemoryUploadedFile 来解决此问题。
由于某种原因,当使用不同文件夹中的实用程序方法读取 InMemoryUploadedFile 时,它会丢失文件路径。
【问题讨论】:
标签: python django unit-testing django-views django-rest-framework