我正在尝试使用webtest编写一些测试来测试我的python GAE应用程序。我遇到的问题是应用程序正在侦听端口8080,但我无法配置webtest来访问该端口。
例如,我想使用app.get('/getreport')来访问http://localhost:8080/getreport。显然,它只命中http:// localhost/getreport。
有没有办法将webtest设置为访问特定的端口?
发布于 2010-05-05 22:49:09
在config,我引用一下,
port需要
吗?否,默认值为"80“
定义用于执行请求的端口号,例如"8080“。
编辑:用户澄清说他们指的是this webtest (pythonpaste的),而不是广泛使用的Canoo应用程序。我不会猜到的,因为pythonpaste的网络测试是完全不同的一回事,我引用...:
使用此工具,您可以在不启动
服务器的情况下测试您的web应用程序,也不需要查看web框架中需要测试的应用程序片段的快捷方式。WebTest运行的测试完全等同于WSGI HTTP服务器调用应用程序的方式
没有启动HTTP服务器,也没有“端口”的概念--在WSGI级别的进程中运行的东西,没有实际的TCP/IP和HTTP。因此,“应用程序”没有监听端口8080 (或任何其他端口),而是直接调用它的WSGI入口点,“就像”HTTP服务器正在调用它们一样。
如果您想测试一个实际运行的HTTP服务器,那么您需要Canoo的webtest (或其他等效的框架),而不是pythonpaste的--后者可以避免任何套接字层和HTTP层开销,从而加快测试速度,但是您不能以这种方式测试一个单独的、现有的、正在运行的服务器(比如GAE的SDK)。
发布于 2010-05-06 09:57:03
使用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....."发布于 2010-05-05 23:18:42
我想你误解了WebTest是做什么的。像app.get('/getreport')这样的东西不应该在任何端口上向localhost发出任何类型的请求。WebTest的美妙之处在于,它不要求您的应用程序实际运行在任何服务器上。
以下是WebTest文档的"What This Does" section中的一句话:
使用此工具,您可以在不启动
服务器的情况下测试您的web应用程序,也不需要查看web框架中需要测试的应用程序片段的快捷方式。WebTest运行的测试完全等同于WSGI HTTP服务器调用应用程序的方式。
https://stackoverflow.com/questions/2774249
复制相似问题