先自我介紹一下,小編浙江大學(xué)畢業(yè),去過華為、字節(jié)跳動等大廠,目前阿里P7
深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長,但自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年最新軟件測試全套學(xué)習(xí)資料》,初衷也很簡單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,涵蓋了95%以上軟件測試知識點,真正體系化!
由于文件比較多,這里只是將部分目錄截圖出來,全套包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實戰(zhàn)項目、大綱路線、講解視頻,并且后續(xù)會持續(xù)更新
如果你需要這些資料,可以添加V獲?。簐ip1024b (備注軟件測試)
正文
這個接口 很簡單,就是完成一個鏈接,獲取到鏈接后,直接返回對應(yīng)的消息。
一個很簡單的接口,那么python如何來實現(xiàn)webscoket協(xié)議接口測試呢,
需要安裝兩個依賴包
pip3 install websocket-client
pip3 install websocket
安裝后,就可以去完成接口的請求。
先創(chuàng)建一個簡單的腳本,去測試下接口是否可以調(diào)用
from websocket import create_connection
import websocket
url = ‘ws://localhost:8081/ws’
wss = create_connection(url)#創(chuàng)建鏈接
wss.settimeout(10) #設(shè)置超時時間
print(wss.getstatus())#狀態(tài)碼是100認(rèn)為成功
wss.send(‘hello world’)#發(fā)送消息
print(wss.recv())#接受小時
wss.shutdown()
測試下
這樣可以正常請求,那么這樣一個簡單的接口,可以設(shè)計一個簡單的用例去測試
其實上面的請求測試,可以改造成一個簡單的接口測試用例。導(dǎo)入
import unittest
然后定一個一個類,繼承
class TestWebsocket(unittest.TestCase):
在setup中
def setUp(self) -> None:
self.url = ‘ws://localhost:8081/ws’
self.wss = create_connection(self.url) # 創(chuàng)建鏈接
其實就是創(chuàng)建鏈接
在tearDown中,斷開
def tearDown(self) -> None:
self.wss.shutdown()
在去新增一個用例
def testone(self):
用例中有兩個斷言,一個是鏈接是否正確,另一個斷言是發(fā)送的消息后是否返回對應(yīng)的值
def testone(self):
status=self.wss.getstatus()
self.assertEqual(status,101,‘websocket連接錯誤’)
self.wss.send(‘hello world’)#發(fā)送消息
recvdata=self.wss.recv()
self.assertTrue((“hello world” in recvdata),‘接口返回錯誤’)
這樣一個簡單的用例就實現(xiàn)完畢了,我們測試下
執(zhí)行成功,測試用例可以正常測試,這樣一個簡單的webscoket的接口的測試就完成了。
其實webscoket接口測試流程就是去創(chuàng)建鏈接,然后傳送數(shù)據(jù),接受數(shù)據(jù)。然后根據(jù)鏈接創(chuàng)建和返回數(shù)據(jù)進(jìn)行對應(yīng)的斷言就可以了。
簡單的接口測試可以這么來做,那么針對復(fù)雜的接口如何做呢,我們?nèi)ツ弥暗膶懙慕涌凇?/p>
@app.websocket(“/ws”)
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
while True:
data = await websocket.receive_text()
await websocket.send_text(f"接受到的消息是: {data}")
manager = ConnectionManager()
給人們消息
@app.websocket(“/ws/{user}/”)
async def websocket_many_point(
websocket: WebSocket,
user: str,
):
await manager.connect(user, websocket)
try:
while True:
data = await websocket.receive_json()
senduser = data.get(‘username’)
if senduser:
await manager.send_other_message_json(data, senduser)
else:
await manager.broadcast_json(data)
except WebSocketDisconnect as e:
manager.disconnect(user, websocket)
@app.websocket(“/ws”)
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
while True:
data = await websocket.receive_text()
await websocket.send_text(f"接受到的消息是: {data}")
manager = ConnectionManager()
給人們消息
@app.websocket(“/ws/{user}/”)
async def websocket_many_point(
websocket: WebSocket,
user: str,
):
await manager.connect(user, websocket)
try:
while True:
data = await websocket.receive_json()
senduser = data.get(‘username’)
if senduser:
await manager.send_other_message_json(data, senduser)
else:
await manager.broadcast_json(data)
except WebSocketDisconnect as e:
manager.disconnect(user, websocket)
很簡單,就是一個給多個人或者單個人發(fā)消息,這里的用例可以簡單的有四個。
測試發(fā)給自己看自己能不能接受到,
一個是群發(fā),看兩個能否接受到,
一個是給某個人發(fā),看那個人是否接受到。
A發(fā)給B,B可以接受到,C接受不到
接著去實現(xiàn)對應(yīng)的測試用例的代碼。
這里面需要注意:數(shù)據(jù)傳輸是根據(jù)字符串的,我們發(fā)送的是json,需要進(jìn)行json處理。直接使用json模塊進(jìn)行處理即可。
import json
from websocket import create_connection, WebSocketTimeoutException
import unittest
class TestWebSocket(unittest.TestCase):
def setUp(self) -> None:
#初始化鏈接地址
self.url = ‘ws://localhost:8081/ws/1/’
#鏈接
self.wss = create_connection(self.url)
def tearDown(self) -> None:
#關(guān)閉鏈接
self.wss.shutdown()
def testnouusernmae(self):
#獲取鏈接狀態(tài)
status = self.wss.getstatus()
#斷言狀態(tài)碼
self.assertEqual(status, 101, ‘websocket連接錯誤’)
#拼裝參數(shù)
senddata = {“dict”: 122}
#發(fā)送
self.wss.send(json.dumps(senddata))
#看群發(fā)是否自己能收到
recvdata = self.wss.recv()
#轉(zhuǎn)化下消息
reslut = json.loads(recvdata)
#斷言
self.assertEqual(reslut, senddata, ‘消息發(fā)送接受到不一致’)
def testorther(self):
#鏈接第二個
self.urlorther = ‘ws://localhost:8081/ws/212/’
#創(chuàng)建鏈接
self.ortherwss = create_connection(self.urlorther)
#獲取狀態(tài)
status = self.wss.getstatus()
網(wǎng)上學(xué)習(xí)資料一大堆,但如果學(xué)到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術(shù)提升。
需要這份系統(tǒng)化的資料的朋友,可以添加V獲?。簐ip1024b (備注軟件測試)
一個人可以走的很快,但一群人才能走的更遠(yuǎn)!不論你是正從事IT行業(yè)的老鳥或是對IT行業(yè)感興趣的新人,都?xì)g迎加入我們的的圈子(技術(shù)交流、學(xué)習(xí)資源、職場吐槽、大廠內(nèi)推、面試輔導(dǎo)),讓我們一起學(xué)習(xí)成長!
()
網(wǎng)上學(xué)習(xí)資料一大堆,但如果學(xué)到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術(shù)提升。
需要這份系統(tǒng)化的資料的朋友,可以添加V獲?。簐ip1024b (備注軟件測試)
[外鏈圖片轉(zhuǎn)存中…(img-S9zhLpTp-1713184121700)]文章來源:http://www.zghlxwxcb.cn/news/detail-856204.html
一個人可以走的很快,但一群人才能走的更遠(yuǎn)!不論你是正從事IT行業(yè)的老鳥或是對IT行業(yè)感興趣的新人,都?xì)g迎加入我們的的圈子(技術(shù)交流、學(xué)習(xí)資源、職場吐槽、大廠內(nèi)推、面試輔導(dǎo)),讓我們一起學(xué)習(xí)成長!文章來源地址http://www.zghlxwxcb.cn/news/detail-856204.html
到了這里,關(guān)于一文揭秘利用python+unittest實現(xiàn)Webscoket協(xié)議接口測試_from websocket import create_connection的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!