2010-05-05 4 views
4

필자는 파이썬 GAE 응용 프로그램을 테스트하기 위해 webtest를 사용하여 몇 가지 테스트를 작성하려고합니다. 내가 겪고있는 문제는 응용 프로그램이 8080 포트에서 수신 대기 중이지만 해당 포트를 공격하기 위해 webtest를 구성 할 수 없다는 것입니다.파이썬 웹 테스트 포트 설정?

예를 들어, app.get ('/ getreport')를 사용하여 http://localhost:8080/getreport을 누르기를 원합니다. 분명히, 그것은 단지 thits http : // localhost/getreport를 친다.

특정 포트를 공격하기 위해 webtest를 설정하는 방법이 있습니까?

답변

2
config에서

, 내가 인용,

port 

필수? 아니요, 기본값은 "80"입니다.

실행 요청에 사용할 포트 번호를 정의합니다. "8080".

편집 : 사용자들은 this WebTest에 (pythonpaste의), 하지 널리 사용되는 Canoo 응용 프로그램을 의미하는 것이 분명. ... pythonpaste의 WebTest에 물고기의 매우 다른 주전자이기 때문에 내가 짐작하지 않았을, 내가 인용 :이

당신이 애플리케이션은 HTTP 서버를 시작하지 않고 웹을 테스트 할 수 있으며, 파고없이 웹 프레임 워크 단축키 부분에 테스트가 필요합니다. 테스트 WebTest에 실행이 WSGI HTTP 서버가 없음 HTTP 서버가 시작되고 있지

응용 프로그램 호출 얼마나 전적으로 해당 있다 "포트"의 개념이 없습니다 - WSGI 레벨에서의 프로세스 실행 일들이, 실제 TCP/IP 및 HTTP를 사용하지 않아도됩니다. 따라서 "응용 프로그램"은 이 아니며은 포트 8080 (또는 다른 포트)에서 수신 대기하는 대신 HTTP 서버가 호출 한 것처럼 해당 WSGI 진입 점을 직접 호출합니다. 당신이 실제 실행되는 HTTP 서버를 테스트하려면

, 당신은 필요 Canoo의 WebTest에 (또는 다른 동등한 프레임 워크), 하지 pythonpaste의 - 어떤 소켓 레이어를 피함으로써 빠르게 테스트 할 것입니다 후자의 HTTP 계층 오버 헤드가 있지만 GAE의 SDK와 같이 별도의 기존 서버를 테스트 할 수는 없습니다.

+1

는 명확하고 있어야합니다. 이것은 웹 테스트의 파이썬 버전으로, Canoo의 webtest와 동일하게 혼동을 일으켰습니다. http://pythonpaste.org/webtest/ – MattM

+1

실제로 TestApp에게 TransparentProxy를 넘겨줌으로써 어느 곳에서나 HTTP 요청을 전달하고 응답을 반환하는 wsgi 애플리케이션 인 다소 다소 가능합니다. –

2

WebTest가 오해하고 있다고 생각합니다. app.get('/getreport')과 같은 것은 어떤 포트에서도 localhost에게 어떤 종류의 요청도해서는 안됩니다. WebTest의 장점은 앱이 실제로 어떤 서버에서든 실행될 필요가 없다는 것입니다. 여기

는 WebTest에 문서의 "What This Does" section에서 인용입니다 :이

HTTP 서버를 시작하지 않고 웹 응용 프로그램을 테스트 할 수 있으며, 필요한 응용 프로그램의 조각에를 따라 바로 가기 웹 프레임 워크에 파고없이 시험을 받아야한다. WebTest가 실행하는 테스트는 WSGI HTTP 서버가 애플리케이션을 호출하는 방법과 완전히 동일합니다.

paste.proxy.TransparentProxy와
4

당신이 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

이 답변은 파이썬 웹 애플리케이션에서 webtest를 활용하는 데 정말로 도움이됩니다. – Joseph

+0

도움이되어 기쁩니다. 꽤 매끄러운 속임수 야. –