0

今天我正在为我的应用程序创建一些单元测试:一个 websocket 客户端..

在现实世界中,ws 服务器是家庭网络中的嵌入式 pc。

现在,对于我的单元测试,我想创建一个假的 ws 服务器并用它来测试客户端。你能建议我一些 ws-server 即插即用,我可以在我的 unittest 设置中调用并将其用于测试吗?

我尝试使用 Autobahn ws 服务器,但它不是即插即用的。它应该可以工作,但我无法在单独的线程中正确处理它。

我的目标是测试客户端而不是开发虚拟服务器。

你能帮我做一些简单易用的东西吗?

在此先感谢,萨尔沃

4

1 回答 1

0

这是我写的最小代码,以避免阻塞命令(serve_forever)

我使用 ws4py 作为 websocket 库。

from wsgiref.simple_server import make_server
from ws4py.websocket import WebSocket
from ws4py.server.wsgirefserver import WSGIServer, WebSocketWSGIRequestHandler
from ws4py.server.wsgiutils import WebSocketWSGIApplication
import threading


class TestWebSocket(WebSocket):
    def received_message(self, message):
        self.send("+OK", False)


class TestServer:
    def __init__(self, hostname='127.0.0.1', port=8080):
        self.server = make_server(hostname,\
                             port,\
                             server_class=WSGIServer,\
                             handler_class=WebSocketWSGIRequestHandler,\
                             app=WebSocketWSGIApplication(handler_cls=TestWebSocket)\
                             )
        self.server.initialize_websockets_manager()
        self.thread = threading.Thread(target=self.server.serve_forever)
        self.thread.start()
        print("Server started for {}:{}".format(hostname, str(port)))

    def shutdown(self):
        self.server.shutdown()
于 2015-08-11T18:17:31.563 回答