Мне действительно нравится путь fakeweb в Ruby, может использоваться для фальсифицирования запросов HTTP при тестировании. Существует ли подобная библиотека или альтернатива для Python?
Если вы пойдете с решением, упомянутым в duffymo, указывая на блог Винни Карпентера, у меня есть наконечник. Была одна область, из-за которой мой контейнер зависал неопределенно долго при обращении к localhost (в частности, в методе private connect ()). Использование следующего взлома было моим обходным путем:
private void connect(final String urlString) {
HttpURLConnection conn;
try {
final URL url = new URL(urlString);
conn = (HttpURLConnection)url.openConnection();
conn.setConnectTimeout(5000);
//time it out quickly - otherwise hangs forever
//seems to be an issue hitting localhost
//will still precompile the page
conn.setReadTimeout(100);
conn.setAllowUserInteraction(true);
conn.getInputStream();
conn.disconnect();
}
catch (SocketTimeoutException e) {
log.debug(e);
}
catch (IOException ioe) {
log.error(ioe);
}
}
Установка тайм-аута и игнорирование SocketTimeoutException сработали (хотя, по общему признанию, не лучшее решение). Кроме того, использование этой процедуры означает, что необходимо указать JSP в файле web.xml. Этого было достаточно для моих нужд.
-121--1866690- Вы ищете функцию chr
.
Кажется, вы смешиваете десятичные представления целых чисел и шестнадцатеричные представления целых чисел, поэтому не совсем ясно, что вам нужно. Основываясь на описании, которое вы дали, я думаю, что один из этих фрагментов показывает, что вы хотите.
>>> chr(0x65) == '\x65'
True
>>> hex(65)
'0x41'
>>> chr(65) == '\x41'
True
Обратите внимание, что это очень отличается от последовательностей, содержащего целое число как шестнадцатеричное . Если это то, что вы хотите, используйте hex
builtin.
См. также Как можно имитировать/заглушить модуль питона, например urllib . Ответ, который рекомендует Mox , кажется самым похожим на fakeweb, но Mox позволяет создавать фальшивые версии любого модуля, а не только urllib.
Для входящих запросов, если веб- рамка использует WebOb ( repoze.bfg , пилоны другие), можно использовать webob.Request.blank
.
from webob import Request
r = Request.blank('/')
a_view_function(r)
Я рекомендую, что вы производите поддельный интенсив для HTTP-запроса, как в Вопросы 1016765: «Использование - в Prokeileialib-с-HTTPLIB-IN-Python .