Библиотека как fakeweb для Python

Мне действительно нравится путь fakeweb в Ruby, может использоваться для фальсифицирования запросов HTTP при тестировании. Существует ли подобная библиотека или альтернатива для Python?

8
задан VoY 29 January 2010 в 13:42
поделиться

2 ответа

Если вы пойдете с решением, упомянутым в 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.

-121--622193-

См. также Как можно имитировать/заглушить модуль питона, например urllib . Ответ, который рекомендует Mox , кажется самым похожим на fakeweb, но Mox позволяет создавать фальшивые версии любого модуля, а не только urllib.

Для входящих запросов, если веб- рамка использует WebOb ( repoze.bfg , пилоны другие), можно использовать webob.Request.blank .

from webob import Request
r = Request.blank('/')
a_view_function(r)
3
ответ дан 5 December 2019 в 22:18
поделиться

Я рекомендую, что вы производите поддельный интенсив для HTTP-запроса, как в Вопросы 1016765: «Использование - в Prokeileialib-с-HTTPLIB-IN-Python .

1
ответ дан 5 December 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: