Как я могу создать HTTP-запрос POST для загрузки файлов с помощью WebOb?

Я использую WebOb Яна Бикинга для очень эффективного написания тестов веб-приложений Python. Я вызываю webob.Request.blank('/path...'), а затем использую метод get_response(app) полученного объекта запроса для вызова моего веб-приложения. Возвращаемый объект ответа позволяет мне проверить код состояния ответа HTTP, тип содержимого, тело и т. д. Создать запрос POST также довольно просто:

Request.blank('/path/under/test/', POST={'query': 'some text'})

Но теперь я столкнулся с небольшой загадкой: мне нужно протестировать представление в моем веб-приложении, которое ожидает загрузку файла, и я не могу понять, как WebOb представляет этот конкретный тип POST. Кто-нибудь знает, как создать запрос WebOb с одним или несколькими полями для загрузки файлов внутри?


person Brandon Rhodes    schedule 28.07.2011    source источник


Ответы (2)


По состоянию на пару дней назад вы можете сделать:

req = Request.blank('/path/under/test', 
                    POST={'query': 'some text', 'upload': ('filename', 'content')})

Это было внесено в этот коммит и еще не выпущено.

person Ian Bicking    schedule 03.08.2011
comment
Идеальный, но неопубликованный ответ, который сделал бы операцию настолько простой, что я даже не мог себе этого представить! А также новая для меня ситуация: я размахиваю большой зеленой галочкой в ​​качестве стимула для вашего освобождения? Или пойти дальше и принять ответ и сердито запустить WebOb из транка в этом проекте? :) - person Brandon Rhodes; 05.08.2011

Для этого вы можете использовать WebTest, см. эти TestApp.post аргументы здесь.

person andreypopp    schedule 29.07.2011