Конфигурация порта Python для веб-тестирования? - PullRequest
4 голосов
/ 05 мая 2010

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

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

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

Ответы [ 3 ]

4 голосов
/ 06 мая 2010

С помощью 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....."
2 голосов
/ 05 мая 2010

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

Вот цитата из раздела «Что это делает» документации WebTest:

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

2 голосов
/ 05 мая 2010

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

port

Обязательно? Нет, по умолчанию "80"

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

Редактировать : пользователь пояснил, что они означают это веб-тест (pythonpaste's), не широко используемое приложение Canoo. Я бы не догадался, потому что веб-тест pythonpaste - это совсем другой котелок рыбы, и я цитирую ...:

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

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

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

...