python webtest端口配置?

python webtest端口配置?

问题描述:

我正在尝试使用webtest编写一些测试来测试我的python GAE应用程序。我遇到的问题是应用程序正在侦听端口8080,但我无法配置webtest命中该端口。python webtest端口配置?

例如,我想使用app.get('/ getreport')来击中http://localhost:8080/getreport。显然,它只是击中http:// localhost/getreport。

有没有办法设置webtest打到一个特定的端口?

config,我引用,

port 

必需?否,默认值为“80”

定义用于执行请求的端口号,例如 。 “8080”。

编辑:用户澄清说,他们的意思是this WebTest的(pythonpaste的),广泛使用Canoo应用。我也不会猜到,因为pythonpaste的WebTest的是一个非常不同的鱼水壶,我引用...:

有了这个,你可以测试你的网页,而无需启动一个HTTP服务器 应用 ,并没有戳进入 网页框架的短片 你的应用程序需要被 测试。测试运行WebTest的是 完全等同于WSGI HTTP服务器 如何调用

没有HTTP服务器正在启动的应用程序,不存在的“端口”的概念 - 东西进程内运行,在WSGI水平,没有实际的TCP/IP和HTTP。因此,“应用程序”是而不是在端口8080(或任何其他端口)上侦听,而是直接调用它的WSGI入口点,就像“HTTP服务器正在调用它们一样”。

如果你想测试的实际运行HTTP服务器,那么你就需要Canoo的WebTest的(或其他等效框架), pythonpaste的 - 后者将避免任何套接字层使测试更快和HTTP层开销,但是你不能以这种方式测试一个单独的,现有的正在运行的服务器(比如GAE的SDK)。

+1

对不起,本来应该更清晰。这是webtest的python版本,与Canoo的webtest混淆命名。 http://pythonpaste.org/webtest/ – MattM 2010-05-05 14:52:28

+1

实际上,通过交给TestApp一个TransparentProxy,它是一个wsgi应用程序,它只是在您告诉它并返回响应的情况下转发http请求。 – 2010-05-06 23:46:10

我认为你误解了WebTest的功能。像app.get('/getreport')之类的东西不应在任何端口上向localhost发出任何请求。 WebTest的优点在于它不需要你的应用程序真正在任何服务器上运行。

下面是从WebTest的文档的"What This Does" section报价:

有了这个,你可以测试,而无需启动一个HTTP服务器的Web应用程序,并没有戳成Web框架shortcutting应用程序的作品需要进行测试。 WebTest运行的测试完全等同于WSGI HTTP服务器如何调用应用程序。

随着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 web应用程序中利用webtest。 – Joseph 2013-08-30 09:10:45

+0

很高兴听到有帮助。这是一个非常漂亮的技巧 – 2013-08-30 22:45:14