Как имитировать запрос HTTP-сообщения из представления django без шаблона

Я пишу виды, не так сильно стремящиеся сразу писать шаблоны.

Но мне нужно проверить свою программу, отправив почтовые запросы.

Как смоделировать HTTP-сообщение из представления django

Я знаю, что модули urllib2 и httplib python позволяют множество опций, но я ищу что-то, что элегантно интегрируется в представления django.

Будет ли U создавать метод, который выполняет post, откуда вы его вызываете?

Обновление. Некоторые ответы касаются тестирования, отправив POST в мое приложение. Что делать, если я хочу использовать POST для внешней службы и работать с ответом POST. Как я могу это сделать без написания шаблонов.

Ответ 1

Django имеет встроенную mock Client utility, которая может имитировать запросы, как если бы они поступали из браузера. Если вам не нужно полностью имитировать браузер и просто хотите вызывать ваши взгляды непосредственно из ваших тестов, подумайте об использовании RequestFactory,

Ответ 2

В таких случаях я думаю, RequestFactory идеально подходит.

Он работает точно так же, как клиент-тест django с той разницей, что он позволяет создавать объект запроса, который вы можете использовать в любом месте. Таким образом, вы можете просто создать свой собственный объект запроса и передать его вашему представлению или форме для тестирования.

Мне нравится этот метод тестирования больше, чем при использовании тестового клиента, поскольку он приближается к модульному тестированию pure. То есть, тестирование одного фрагмента кода. Если вы используете тестовый клиент, добавляется больше уровней до того, как будет достигнут фактический код, который вы тестируете.

Ответ 3

Чтобы избежать боли при создании объекта запроса, вы можете использовать этот совет на фрагменты Django

Ответ 4

Похоже, вы ищете либо unit test, либо приемочный тест. Взгляните на unittest, который является частью стандартной библиотеки.

Для быстрых специальных тестов при разработке веб-приложений мне нравится использовать завиток. Это простой инструмент командной строки, который легко генерирует всевозможные HTTP-запросы. Вы можете использовать POST с помощью команды, например:

curl -i -d field=value http://localhost:8080/sample/something

Curl доступен на многих платформах. Проверьте это на http://curl.haxx.se/

Ответ 5

Если вы смотрите на это из контекста написания unittests, вы можете подумать о создании объекта Request самостоятельно и просто вызвать функцию view напрямую. Вы могли бы даже издеваться над ним и любыми другими параметрами, которые может иметь вид.