Neoteroi / BlackSheep

Fast ASGI web framework for Python
https://www.neoteroi.dev/blacksheep/
MIT License
1.86k stars 78 forks source link

feat: Added support for WebSocket in TestClient #487

Open Randomneo opened 6 months ago

Randomneo commented 6 months ago

Great package. TY for your hard work. I'm really enjoying blacksheep so far. But it feels like its missing a bit of WebSocket testing support.

Added starlette like WebSocket testing.

from blacksheep import Application, WebSocket, ws
from blacksheep.testing import TestClient

app = Application()

@ws('/ws')
async def websocket_endpoint(websocket: WebSocket):
    await websocket.accept()
    await websocket.send_text('hello world')

@pytest.mark.asyncio
async def test_test_websocket():
    await app.start()
    client = TestClient(app)
    async with client.websocket_connect('/ws') as websocket:
        received = await websocket.receive_text()
    assert received == 'hello world'