Как смоделировать запрос HTTP Post из представления django без шаблона - PullRequest
11 голосов
/ 28 марта 2009

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

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

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

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

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

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

Ответы [ 5 ]

11 голосов
/ 28 марта 2009

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

3 голосов
/ 04 мая 2012

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

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

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

2 голосов
/ 17 января 2010

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

1 голос
/ 28 марта 2009

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

1 голос
/ 28 марта 2009

Звучит так, будто вы ищете либо юнит-тест, либо приемочный тест. Взгляните на unittest, который является частью стандартной библиотеки.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...