使用Django和Webtest测试图像上传

时间:2012-12-04 21:22:59

标签: django tdd webtest django-webtest

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

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

在回复中,我收到以下错误“上传有效图片。您上传的文件不是图片或图片已损坏。”。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分: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())

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

答案 1 :(得分:2)

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

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

form.submit(upload_files=[('avatar', '/../file_path.png'))

答案 2 :(得分:0)

使用Python 3:

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