如何在Django测试中提交图像上传?

时间:2009-12-20 20:09:28

标签: django testing

Django docs(http://docs.djangoproject.com/en/dev/topics/testing/#django.test.client.Client.post)说这样做:

>>> c = Client()
>>> f = open('wishlist.doc')
>>> c.post('/customers/wishes/', {'name': 'fred', 'attachment': f})
>>> f.close()

但是当我这样做时,该字段会显示错误消息“提交的文件为空”。这有点像PIL问题,但表单在实际网站上运行良好。

读取文件并发送该文件而不仅仅是句柄也不起作用,并且与传递空字符串的行为相同。

2 个答案:

答案 0 :(得分:6)

好的,我明白了。我在多个字段使用相同的虚拟图像,Django在验证第一个字段后没有重置指针。

此外,文档中的示例也未显示图像也需要以二进制模式打开。

答案 1 :(得分:0)

我认为open需要一个相对于调用它的文件路径。

我不确定在运行测试时会出现什么情况,但是可能尝试使用绝对路径并查看它是否有效?