2010-05-05 2 views
4

Я пытаюсь написать несколько тестов с помощью webtest, чтобы проверить мое приложение GAE для python. Проблема, с которой я сталкиваюсь, заключается в том, что приложение прослушивает порт 8080, но я не могу настроить веб-тест для попадания в этот порт.Конфигурация порта для python webtest?

Например, я хочу использовать app.get ('/ getreport'), чтобы нажать http://localhost:8080/getreport. Очевидно, он попадает только в http: // localhost/getreport.

Есть ли способ настроить веб-тест, чтобы попасть в конкретный порт?

ответ

2

config В, и я цитирую,

port 

Обязательный? Нет, значения по умолчанию - «80»

Определяет номер порта для использования для исполняющих запросов, например. "8080".

Edit: пользователь пояснил, что они означают this WebTest (pythonpaste в), не широко используется Canoo применение. Я бы не догадался, потому что WebTest pythonpaste является очень разные коленкор, и я цитирую ...:

С этим вы можете проверить свой веб приложения без запуска в сервер HTTP, и без тыкать в створки для веб-фрейма, сокращающие кусочки ваше приложение, которое должно быть проверено. Испытания WebTest пробеги полностью эквивалентно тому, как WSGI HTTP сервер назовет приложение

Нет HTTP-сервер не будучи запущен, не существует понятия «порт» - вещи выполняются в процессе, на уровне WSGI , без реальных TCP/IP и HTTP в игре. Таким образом, «приложение» - это , а не, прослушивание порта 8080 (или любого другого порта), а его точки входа WSGI вызываются напрямую, «как если бы» вызывал их HTTP-сервер.

Если вы хотите проверить реальный сервер работает HTTP, то вам нужно Canoo «s WebTest (или другие эквивалентные структуры), не pythonpaste в - последний будет делать для более быстрого тестирования, избегая каких-либо сокет-слой и накладные расходы на уровне HTTP, но вы не можете протестировать отдельный, существующий, работающий сервер (например, SDK от GAE) таким образом.

+1

К сожалению, должно быть яснее. Это версия веб-сайта python, смутно названная так же, как веб-сайт Canoo. http://pythonpaste.org/webtest/ – MattM

+1

На самом деле это возможно, передав TestApp TransparentProxy, который является приложением wsgi, которое просто пересылает HTTP-запросы, где бы вы ни говорили, и возвращает ответы. –

2

Я думаю, вы не понимаете, что делает WebTest. Что-то вроде app.get('/getreport') не должно делать никакого запроса до localhost на любом порту. Красота WebTest заключается в том, что не требуется, чтобы ваше приложение фактически работало на любом сервере.

Вот цитата из "What This Does" section из WebTest документы:

С этим вы можете проверить свои веб-приложения без запуска сервера HTTP, а не тыкать в веб-рамки shortcutting части вашего приложения, которые должны быть протестированным. Тестирование WebTest-тестов полностью эквивалентно тому, как HTTP-сервер WSGI будет вызывать приложение.

4

С paste.proxy.TransparentProxy вы можете проверить все, что отвечает на запрос HTTP ...

from webtest import TestApp 
from paste.proxy import TransparentProxy 
testapp = TestApp(TransparentProxy()) 
res = testapp.get("http://google.com") 
assert res.status=="200 OK","failure....." 
+0

Этот ответ действительно помогает нам использовать веб-сайт в нашем веб-приложении python. – Joseph

+0

рад слышать, что помогает. это довольно хитрый трюк –

Смежные вопросы