2015-08-09 69 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()