【问题标题】:Unit Testing Django Views that uploads image to s3将图像上传到 s3 的单元测试 Django 视图
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-31
      • 2011-06-15
      • 2015-05-16
      • 2015-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多