pytest-tornado icon indicating copy to clipboard operation
pytest-tornado copied to clipboard

Support for WebSockets

Open gsmafra opened this issue 7 years ago • 1 comments

Is there, even if unintentionally, support for testing a Tornado WebSocket server with pytest-tornado? If yes, how would you go to make a basic example, similar to the one shown for the HTTP server?

This is what I tried to do but it gets stuck waiting for the websocket_connect to yield something

import pytest
import tornado.websocket

class MainHandler(tornado.websocket.WebSocketHandler):

    def open(self):
        print('Websocket connection open')

    def on_message(self, message):
        self.write_message(message)
        print('Websocket message received: %s' % message)

    def on_close(self):
        print('Websocket connection closed')

application = tornado.web.Application([
    (r"/", MainHandler),
])

@pytest.fixture
def app():
    return application

@pytest.mark.gen_test
def test_hello_world(http_port):
    base_url = f"ws://localhost:{http_port}/"
    client = yield tornado.websocket.websocket_connect(base_url)
    client.write_message('message')
    response = yield client.read_message()
    assert response is not None

gsmafra avatar Mar 14 '17 15:03 gsmafra

I'm also interested in this, but can't get it working due to https://github.com/eugeniy/pytest-tornado/issues/56, and I'm having trouble figuring out how to turn it into a non-gen-test test. Any ideas welcome.

Pytest updates also mean http_port has to change to http_server_port, I think.

Is the reason this test is not working perhaps because the app is created, but never actually started?

naught101 avatar Jun 29 '20 05:06 naught101