单元测试将图像上传到s3的Django视图

时间:2017-05-02 10:17:08

标签: python django unit-testing django-views django-rest-framework

我写了一个简单的单元测试来测试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在使用不同文件夹中的实用程序方法读取文件路径时会丢失文件路径。

1 个答案:

答案 0 :(得分:0)

通过在测试中的同一视图中读取文件而不是使用其他实用工具方法来读取InMemoryUploadedFile来解决此问题。

由于某种原因,InMemoryUploadedFile在使用不同文件夹中的实用程序方法读取文件路径时会丢失文件路径。