Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python webtest端口配置?_Python_Google App Engine_Webtest - Fatal编程技术网

python webtest端口配置?

python webtest端口配置?,python,google-app-engine,webtest,Python,Google App Engine,Webtest,我试图使用webtest编写一些测试来测试我的python GAE应用程序。我遇到的问题是,应用程序正在侦听端口8080,但我无法配置webtest以访问该端口 例如,我想使用app.get('/getreport')来点击。显然,它只会点击http://localhost/getreport 有没有办法设置webtest以命中特定端口?在中,我引用 port 需要吗?否,默认值为“80” 定义要用于的端口号 执行请求,例如“8080” 编辑:用户澄清他们指的是webtest(pythonpa

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

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

有没有办法设置webtest以命中特定端口?

在中,我引用

port
需要吗?否,默认值为“80”

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

编辑:用户澄清他们指的是webtest(pythonpaste's),而不是广泛使用的Canoo应用程序。我不会猜到,因为pythonpaste的网络测试是一个非常不同的测试,我引用…:

有了这个,你可以测试你的网站 不启动HTTP的应用程序 服务器,而无需插入 web框架简化 您的应用程序需要 测试。WebTest运行的测试是 完全等同于wsgihttp 服务器将调用一个应用程序

没有HTTP服务器被启动,也没有“端口”的概念——在WSGI级别运行的东西在进程中运行,没有实际的TCP/IP和HTTP。因此,“应用程序”没有监听端口8080(或任何其他端口),而是直接调用其WSGI入口点,“就像”HTTP服务器在调用它们一样


如果您想测试一个实际运行的HTTP服务器,那么您需要的是Canoo的webtest(或其他等效框架),而不是pythonpaste的——后者可以通过避免任何套接字层和HTTP层开销来加快测试速度,但您不能测试一个单独的、现有的、正在运行的服务器(如GAE的SDK)这样做。

我认为您误解了WebTest的功能。类似于
app.get('/getreport')
的东西不应该对任何端口上的
localhost
发出任何类型的请求。WebTest的美妙之处在于它不需要你的应用程序在任何服务器上运行

以下是WebTest文档的引用:

有了它,您就可以测试web应用程序,而无需启动HTTP服务器,也无需插入web框架来缩短需要测试的应用程序片段。WebTest运行的测试完全等同于WSGIHTTP服务器调用应用程序的方式


使用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....."

对不起,应该说得更清楚些。这是webtest的python版本,与Canoo的webtest同名。实际上,给TestApp一个TransparentProxy是有可能的,它是一个wsgi应用程序,只要你告诉它,它就会转发http请求并返回响应。这个答案确实帮助我们在python web应用程序中利用webtest。