FastAPI(60)- 針對 WebSocket 進行單元測試


前言

還是比較簡單的,直接寫代碼啦

FastAPI 的單元測試:https://www.cnblogs.com/poloyy/p/15354901.html

 

直接上代碼

#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
# author: 小菠蘿測試筆記
# blog:  https://www.cnblogs.com/poloyy/
# time: 2021/10/7 9:05 下午
# file: 51_test_websocket.py
"""

from fastapi import FastAPI
from fastapi.testclient import TestClient
from fastapi.websockets import WebSocket

app = FastAPI()
testClient = TestClient(app)


@app.websocket("/ws")
async def connect(websocket: WebSocket):
    await websocket.accept()
    await websocket.send_json({"msg": "Hello WebSocket"})
    await websocket.close()


def test_websocket():
    # 建立 websocket 連接
    with testClient.websocket_connect("/ws") as websocket:
        # 接收數據
        data = websocket.receive_json()
        # 斷言數據
        assert data == {"msg": "Hello WebSocket"}

 

運行

命令行敲

pytest test.py

  

websocket_connect()

必須用作上下文管理器,使用 with ... as ... 來管理

 

發送數據的三種方法

  • .send_text(data):將給定的文本發送到應用程序
  • .send_bytes(data):將給定的字節發送到應用程序
  • .send_json(data, mode="text"):將給定的數據發送到應用程序,使用 mode="binary" 通過二進制數據幀發送 JSON

 

接收數據的三種方法

  • .receive_text():等待應用程序發送的傳入文本並返回它
  • .receive_bytes():等待應用程序發送的傳入字節串並返回它
  • .receive_json(mode="text"):等待應用程序發送的傳入 json 數據並返回它,使用 mode="binary" 通過二進制數據幀發送 JSON

可能會引發 starlette.websockets.WebSocketDisconnect

 

關閉連接

.close(code=1000):在客戶端關閉 websocket 連接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM