6

有谁知道我如何使用 WebTest 测试图像上传。我目前的代码是:

form['avatar'] =('avatar', os.path.join(settings.PROJECT_PATH, 'static', 'img', 'avatar.png'))
res = form.submit()

在响应中,我收到以下错误“上传有效图像。您上传的文件不是图像或损坏的图像。”。

任何帮助将不胜感激。

4

3 回答 3

6

权力是对的。不幸的是(或没有)我花了半个小时调试 webtest 后找到了他的答案。这是更多信息。

尝试仅传递文件的路径会给您带来以下异常:

webtest/app.py",第 1028 行,在 _get_file_info

ValueError:upload_files 需要是 (fieldname, filename, filecontent) 或 (fieldname, filename) 的元组列表;你给了: ...

问题是它没有告诉你它会自动将字段名称附加到元组发送并将 3 项元组变成 4 项元组。最终的解决方案是:

avatar = ('avatar',
           file(os.path.join(settings.PROJECT_PATH, '....', 'avatar.png')).read())

太糟糕了,没有像样的例子,但我希望这对其他人也有帮助)

于 2012-12-04T22:19:15.030 回答
3

如今选择的答案对我没有帮助。

但我找到了在 .submit() 方法 args 中提供预期文件的方法

form.submit(upload_files=[('avatar', '/../file_path.png')])
于 2015-04-10T10:47:11.900 回答
1

使用 Python 3:

form["avatar"] = ("avatar.png", open(os.path.join(settings.PROJECT_PATH, '....', 'avatar.png', "rb").read())
于 2020-05-11T11:22:27.667 回答