使用Django和Webtest测试图像上传

使用Django和Webtest测试图像上传,django,tdd,webtest,django-webtest,Django,Tdd,Webtest,Django Webtest,有人知道我如何使用WebTest测试图像上传吗。我目前的代码是: form['avatar'] =('avatar', os.path.join(settings.PROJECT_PATH, 'static', 'img', 'avatar.png')) res = form.submit() 在响应中,我收到以下错误“上载有效图像。您上载的文件不是图像或已损坏的图像。” 任何帮助都将不胜感激。动力是正确的。不幸的是,在我花了半个小时调试webtest之后,我找到了他的答案。这里有更多的信息

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

form['avatar'] =('avatar', os.path.join(settings.PROJECT_PATH, 'static', 'img', 'avatar.png'))
res = form.submit()
在响应中,我收到以下错误“上载有效图像。您上载的文件不是图像或已损坏的图像。”


任何帮助都将不胜感激。

动力是正确的。不幸的是,在我花了半个小时调试webtest之后,我找到了他的答案。这里有更多的信息

尝试仅传递文件的路径会导致以下异常:

webtest/app.py”,第1028行,在“获取文件信息”中

ValueError:upload_文件需要是(fieldname, 文件名,文件内容)或(字段名,文件名);您给出:

问题在于,is没有告诉您它会自动将字段名附加到元组send,并将3项元组变成4项元组。最终的解决方案是:

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

很遗憾,没有像样的例子,但我希望这也能帮助其他人)

现在选择的答案对我没有帮助

但是我找到了在.submit()方法args中提供所需文件的方法

form.submit(upload_files=[('avatar', '/../file_path.png')])
对于Python 3:

form["avatar"] = ("avatar.png", open(os.path.join(settings.PROJECT_PATH, '....', 'avatar.png', "rb").read())

我想您应该传递文件的对象。不,如果传递了文件对象,webtest返回“ValueError:文件内容必须为非”如果传递image_file.read()会发生什么?