gpt4 book ai didi

python - PIL - 提交的文件为空测试用例

转载 作者:太空狗 更新时间:2023-10-30 00:55:09 27 4
gpt4 key购买 nike

我有一个文件上传效果很好,但是我想为它写一个测试,所以我做了以下......

   def test_post_ok(self):

image = Image.new('RGB', (100, 100)
tmp_file = tempfile.NamedTemporaryFile(suffix='.jpg')
image.save(tmp_file)
payload = {
"name": "Test",
"thumbnail_image": tmp_file
}
api = APIClient()
api.credentials(Authorization='Bearer ' + self.token)
response = api.post(url, payload, format='multipart')

但是,测试报错...

<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=1024x768 at 0x108A5DCF8>
{'thumbnail_image': [u'The submitted file is empty.']}

我假设我没有正确执行此操作,如果不是为什么?

最佳答案

我之前的猜测是错误的。您正在使用具有多部分功能的 Rest 框架(太棒了!),因此您可以按原样发送文件,文件将被编码为多部分。

这里的错误是:

  1. 您打开文件 tmp_file
  2. 你把图像内容写入这个文件
  3. 文件指针现在位于文档末尾
  4. 您将文档传递给 APIClient(),这是一个简单的测试包装器,它通过 rest_framework 向上传递参数,最终您的调用在这里被编码
  5. 编码将调用tmp_file.read()。由于指针仍在文件末尾,read() 将返回 0 个字节,留下一个空文档。

解决方案:tmp_file.seek(0) 或在调用 post()

之前重新打开文件

关于python - PIL - 提交的文件为空测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30799095/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com