0

今日、私は自分のアプリケーションの単体テストを作成する作業をしていました: websocket クライアント..

現実の世界では、ws サーバーはホーム ネットワークに組み込まれた pc です。

ここで、単体テストのために、偽の ws サーバーを作成し、それを使用してクライアントをテストしたいと思います。unittest セットアップ内で呼び出してテストに使用できる ws-server プラグアンドプレイをいくつか提案してもらえますか?

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 に答える