2015-08-09 59 views
0

今天我正在努力创造我的应用程序的一些单元测试:一个客户端的WebSocket ..Python的单元测试 - WebSocket伺服器

在现实世界中,WS服务器是在家庭网络中的PC embeeded。

现在,对于我的单元测试,我想创建一个假的ws服务器并用它来测试客户端。 你可以建议我一些ws服务器插件&发挥,我可以打电话在我的单元测试设置和使用它进行测试?

我试过使用Autobahn的WS服务器,但它不插入&玩..它应该工作,但我无法正确处理它在一个单独的线程。

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

你可以帮助我一些简单和随时可以使用的东西吗?

由于提前, 齐射

+0

谷歌搜索很多,并有一定的耐心,我写了一个最小的python类。 最后,我使用ws4py库,在另一个线程上安装服务器,并在服务器上关闭服务器和线程时调用shutdown()。 –

回答

0

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

我用ws4py作为网页套接字库。

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()