pythonasyncioapiasyncfastapiframeworkjsonjson-schemaopenapiopenapi3pydanticpython-typespython3redocreststarletteswaggerswagger-uiuvicornweb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.7 KiB
67 lines
1.7 KiB
from fastapi import APIRouter, FastAPI
|
|
from starlette.testclient import TestClient
|
|
from starlette.websockets import WebSocket
|
|
|
|
router = APIRouter()
|
|
prefix_router = APIRouter()
|
|
app = FastAPI()
|
|
|
|
|
|
@app.websocket_route("/")
|
|
async def index(websocket: WebSocket):
|
|
await websocket.accept()
|
|
await websocket.send_text("Hello, world!")
|
|
await websocket.close()
|
|
|
|
|
|
@router.websocket_route("/router")
|
|
async def routerindex(websocket: WebSocket):
|
|
await websocket.accept()
|
|
await websocket.send_text("Hello, router!")
|
|
await websocket.close()
|
|
|
|
|
|
@prefix_router.websocket_route("/")
|
|
async def routerprefixindex(websocket: WebSocket):
|
|
await websocket.accept()
|
|
await websocket.send_text("Hello, router with prefix!")
|
|
await websocket.close()
|
|
|
|
|
|
@router.websocket("/router2")
|
|
async def routerindex(websocket: WebSocket):
|
|
await websocket.accept()
|
|
await websocket.send_text("Hello, router!")
|
|
await websocket.close()
|
|
|
|
|
|
app.include_router(router)
|
|
app.include_router(prefix_router, prefix="/prefix")
|
|
|
|
|
|
def test_app():
|
|
client = TestClient(app)
|
|
with client.websocket_connect("/") as websocket:
|
|
data = websocket.receive_text()
|
|
assert data == "Hello, world!"
|
|
|
|
|
|
def test_router():
|
|
client = TestClient(app)
|
|
with client.websocket_connect("/router") as websocket:
|
|
data = websocket.receive_text()
|
|
assert data == "Hello, router!"
|
|
|
|
|
|
def test_prefix_router():
|
|
client = TestClient(app)
|
|
with client.websocket_connect("/prefix/") as websocket:
|
|
data = websocket.receive_text()
|
|
assert data == "Hello, router with prefix!"
|
|
|
|
|
|
def test_router2():
|
|
client = TestClient(app)
|
|
with client.websocket_connect("/router2") as websocket:
|
|
data = websocket.receive_text()
|
|
assert data == "Hello, router!"
|
|
|