如何使用tornado.testing创建WebSocket单元测试?
我正在开发一个与龙卷风的 websocket 功能一起使用的项目。我看到了大量有关使用异步代码的文档,但没有任何关于如何使用它来创建与其 WebSocket 实现一起使用的单元测试的信息。
tornado.testing
是否提供执行此操作的功能?如果是这样,有人可以提供一个简短的例子来说明如何实现这一目标吗?
提前致谢。
I'm working on a project that works with tornado's websocket functionality. I see a decent amount of documentation for working with asychronous code, but nothing on how this can be used to create unit tests that work with their WebSocket implementation.
Does tornado.testing
provide the functionality to do this? If so, could someone provide a brief example of how to make it happen?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
正如@Vladimir所说,您仍然可以使用
AsyncHTTPTestCase
来创建/管理测试Web服务器实例,但是您可以仍然以与正常HTTP请求相同的方式测试WebSockets - 没有任何语法糖可以帮助你。Tornado 也有自己的 WebSocket 客户端,因此不需要(据我所知)使用第三方客户端 - 也许这是最近添加的。所以尝试这样的事情:
希望无论如何这是一个好的起点。
As @Vladimir said, you can still use
AsyncHTTPTestCase
to create/manage the test webserver instance, but you can still test WebSockets in much the same way as you would normal HTTP requests - there's just no syntactic sugar to help you.Tornado also has its own WebSocket client so there's no need (as far as I've seen) to use a third party client - perhaps it's a recent addition though. So try something like:
Hopefully that's a good starting point anyway.
我尝试在基于
tornado.websocket.WebSocketHandler
的处理程序上实现一些单元测试,并得到以下结果:首先,
AsyncHTTPTestCase
肯定缺乏 Web 套接字支持。尽管如此,人们至少可以使用它来管理 IOLoop 和应用程序,这一点很重要。不幸的是,tornado 没有提供 WebSocket 客户端,因此这里输入侧面开发的库。
这是使用 Jef 的 Web Socket 单元测试 Balog 的 tornado websocket 客户端。
I've attempted to implement some unit tests on
tornado.websocket.WebSocketHandler
based handlers and got the following results:First of all
AsyncHTTPTestCase
definitely has lack of web sockets support.Still, one can use it at least to manage
IOLoop
and application stuff which is significant. Unfortunately, there is no WebSocket client provided with tornado, so here enter side-developed library.Here is unit test on Web Sockets using Jef Balog's tornado websocket client.
这个答案(和问题)可能会感兴趣,我使用ws4py 用于客户端和 Tornado 的 AsyncTestCase 简化了整个过程。
This answer (and the question) may be of interest, I use ws4py for the client and Tornado's AsyncTestCase which simplifies the whole thing.