Тестирование загрузки изображений с Django и Webtest

Кто-нибудь знает, как я могу проверить загрузку изображений с помощью WebTest. Мой текущий код:

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

В ответ я получаю следующее сообщение об ошибке: "Загрузить действительное изображение. Загруженный вами файл не был изображением или поврежденным изображением".

Любая помощь будет оценена.

2 ответа

Решение

Власть была права. К сожалению (или нет) я нашел его ответ после того, как потратил полчаса на отладку веб-теста. Вот немного больше информации.

Попытка передать только путь к файлам приводит к следующему исключению:

webtest / app.py ", строка 1028, в _get_file_info

ValueError: upload_files должен быть списком кортежей (имя поля, имя файла, содержание файла) или (имя поля, имя файла); ты дал: ...

Проблема в том, что вам не сказали, что он автоматически добавит имя поля к отправке кортежа и сделает кортеж из 3 элементов в один из 4 элементов. Окончательные решения были:

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

Жаль, что нет приличного примера, но я надеюсь, что это поможет кому-то еще)

В настоящее время выбранный ответ не помог мне.

Но я нашел способ предоставить ожидаемые файлы в методе.submit()

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())
Другие вопросы по тегам