Документы Django (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, но форма отлично работает на реальном сайте.
Чтение файла и отправка его вместо дескриптора также не работает и ведет себя так же, как передача пустой строки.
ОК, я понял это. Я использовал одно и то же фиктивное изображение для нескольких полей, и Django не сбрасывает указатель после проверки первого поля.
Также пример в документации не показывает, что изображения также должны открываться в двоичном режиме.
Я думаю, open ожидает путь к файлу относительно того, откуда он вызывается.
open
Я не уверен, где это будет, когда выполняется тест, но, возможно, попробуйте с абсолютным путем и посмотрите, работает ли он?