Python UnitTest - Websocket Server

Сегодня я работал над созданием нескольких юнит-тестов для моего приложения: клиент websocket..

В реальном мире сервер ws является встроенным ПК в домашней сети.

Теперь, для моего unittest, я хотел бы создать поддельный ws-сервер и использовать его для тестирования клиента. Можете ли вы предложить мне несколько подключений и подключений к ws-серверу, которые я могу вызвать внутри моей установки unittest и использовать для тестирования?

Я пытался использовать сервер Autobahn ws, но он не подключен и работает... Он должен работать, но я не могу правильно обработать его в отдельном потоке.

Моя цель - протестировать клиента, чтобы он не разрабатывал фиктивный сервер.

Можете ли вы помочь мне с чем-то простым и готовым к использованию?

Заранее спасибо, Сальво

1 ответ

Вот минимальный код, который я написал, чтобы избежать команды блокировки (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()
Другие вопросы по тегам