如何单元测试 Flask websocket 服务器 (Flask-SocketIO)

How to unittest Flask websocket server (Flask-SocketIO)

我想知道如何在我的 flask websocket 服务器上进行单元测试。 我的应用程序在 REST API(Flask-restful) 和 Web Socket(Flask-SocketIO) 上支持相当多的接口。所有 websocket "emit" 都在 celery 进程上进行。我在单元测试那些 websocket 逻辑时遇到问题。

  1. 几个人说,首先我必须分开这个 rest-api + websocket 应用程序。 运行 整个应用程序在单个服务器上(逻辑上)很奇怪吗?

  2. 如何对 websocket 代码进行单元测试?

谢谢

有些人更喜欢 HTTP 和 WebSocket 的单独应用程序,但我不会盲目推荐。在某些情况下这样做是有意义的,而在其他情况下则没有,特别是如果您使用的是 Flask-SocketIO,它会为您提供相当强大的集成。

Flask-SocketIO 扩展包含一个测试客户端,其概念类似于 Flask 的测试客户端,但旨在与套接字路由一起使用。你看过了吗?

如果您想要一个使用 Flask、Celery、Socket.IO 并且对所有内容都有一套很好的单元测试的示例应用程序,请查看 Flack:https://github.com/miguelgrinberg/flack. I gave a tutorial session at PyCon 2016 in which I cover this application in detail: https://www.youtube.com/watch?v=tdIIJuPh3SI