1.基础测试方法
1 | from fastapi import FastAPI |
- 使用
TestClient创建测试客户端,websocket_connect()方法建立WebSocket连接 - 必须使用
with上下文管理器管理连接生命周期,确保正确关闭 - 流程图展示测试流程:
graph TD A[启动TestClient] --> B[建立WebSocket连接] B --> C[发送模拟请求] C --> D[接收响应数据] D --> E[断言验证] E --> F[关闭连接]
2.数据交互测试方法
2.1 发送数据方法
1 | websocket.send_text("测试消息") # 发送文本 |
- 支持三种数据格式发送:文本、二进制、JSON
- JSON模式可选择
mode="binary"通过二进制帧发送
2.2 接收数据方法
1 | text = websocket.receive_text() # 接收文本 |
- 接收方法会阻塞直到数据到达
- 断言示例:
1
assert json_data == {"status": "success"}
3.异常场景测试
3.1 连接断开测试
1 | import pytest |
- 捕获
WebSocketDisconnect异常验证连接关闭 - 可指定关闭状态码(如1000表示正常关闭)
3.2 错误响应测试
1 | def test_invalid_route(): |
- 测试不存在的路由返回404状态码
4.生产环境测试建议
多客户端模拟:
1
2
3
4
5async def multi_client_test():
async with websockets.connect(uri) as ws1, \
websockets.connect(uri) as ws2:
await ws1.send("msg1")
await ws2.send("msg2")使用
websockets库模拟并发连接性能基准测试:
- 通过
pytest-benchmark插件测量响应延迟 - 建议单连接吞吐量>1000 msg/sec
- 通过
安全测试要点:
- 测试最大消息大小限制(默认1MB)
- 验证
wss://协议加密传输 - 检查跨域请求头
Access-Control-Allow-Origin
测试命令示例:
1
2
3
4
5 # 运行测试用例
pytest test_websockets.py -v
# 带覆盖率检测
pytest --cov=app --cov-report=html