В документах 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
ожидает путь к файлу относительно того, откуда он вызывается.
Я не уверен, где он будет, когда выполняется тест, но, возможно, попробуйте указать абсолютный путь и посмотрите, это работает?