python webtest端口配置?

发布于 2024-08-31 02:21:42 字数 322 浏览 5 评论 0原文

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

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

有没有办法设置 webtest 来访问特定端口?

I am attempting to write some tests using webtest to test out my python GAE application. The problem I am running into is that the application is listening on port 8080 but I cannot configure webtest to hit that port.

For example, I want to use app.get('/getreport') to hit http://localhost:8080/getreport. Obviously, it hits just thits http:// localhost/getreport.

Is there a way to set up webtest to hit a particular port?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

放飞的风筝 2024-09-07 02:21:43

我认为您误解了 WebTest 的作用。像 app.get('/getreport') 这样的东西不应该在任何端口上向 localhost 发出任何类型的请求。 WebTest 的优点在于它不需要您的应用程序实际在任何服务器上运行。

以下是 WebTest 文档的“这是做什么”部分的引用:

有了这个,您可以测试您的 Web 应用程序,而无需启动 HTTP 服务器,也无需深入研究 Web 框架快捷方式需要测试的应用程序部分。 WebTest 运行的测试完全等同于 WSGI HTTP 服务器调用应用程序的方式。

I think you're misunderstanding what WebTest does. Something like app.get('/getreport') shouldn't make any kind of request to localhost on any port. The beauty of WebTest is that it doesn't require your app to actually be running on any server.

Here's a quote from the "What This Does" section of the WebTest docs:

With this you can test your web applications without starting an HTTP server, and without poking into the web framework shortcutting pieces of your application that need to be tested. The tests WebTest runs are entirely equivalent to how a WSGI HTTP server would call an application.

红墙和绿瓦 2024-09-07 02:21:42

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

With paste.proxy.TransparentProxy you can test anything that responds to an http request...

from webtest import TestApp
from paste.proxy import TransparentProxy
testapp = TestApp(TransparentProxy())
res = testapp.get("http://google.com")
assert res.status=="200 OK","failure....."
迷雾森÷林ヴ 2024-09-07 02:21:42

config 中,我引用,

port

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

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

编辑:用户澄清他们的意思是这个 webtest(pythonpaste的),不是广泛使用的 Canoo 应用程序。我不会猜到,因为 pythonpaste 的 webtest 是一个非常不同的鱼,我引用......:

用这个你可以测试你的网络
无需启动 HTTP 的应用程序
服务器,并且无需刺探
Web 框架的快捷方式
您的应用程序需要
已测试。 WebTest 运行的测试是
完全等同于 WSGI HTTP
服务器将调用应用程序

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

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

In config, and I quote,

port

Required? No, defaults is "80"

Defines the port number to use for
executing requests, e.g. "8080".

Edit: the user clarified that they mean this webtest (pythonpaste's), not the widely used Canoo application. I wouldn't have guessed, because pythonpaste's webtest is a very different kettle of fish, and I quote...:

With this you can test your web
applications without starting an HTTP
server, and without poking into the
web framework shortcutting pieces of
your application that need to be
tested. The tests WebTest runs are
entirely equivalent to how a WSGI HTTP
server would call an application

No HTTP server being started, there is no concept of "port" -- things run in-process, at WSGI level, without actual TCP/IP and HTTP in play. So, the "application" is not listening on port 8080 (or any other port), but rather its WSGI entry points are called directly, "just as if" an HTTP server was calling them.

If you want to test an actual running HTTP server, then you need Canoo's webtest (or other equivalent frameworks), not pythonpaste's -- the latter will make for faster testing by avoiding any socket-layer and HTTP-layer overhead, but you can't test a separate, existing, running server (such as GAE's SDK's) in this way.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文