WebSocket接口纽门,陌生的協(xié)議接口測試方法

學(xué)習(xí)極客時(shí)間《接口測試入門課》,有一些積累和不同的收獲营罢。在時(shí)間很緊張的情況下赏陵,我們對接口測試的方式:對接口進(jìn)行正確的邏輯測試饼齿、錯(cuò)誤的邏輯測試,去判斷是否滿足最初的需求蝙搔,因此缕溉,我們需要快速地掌握驗(yàn)證手段。

1吃型、陌生協(xié)議接口測試方法

但是當(dāng)我們面對的是一個(gè)陌生的新協(xié)議時(shí)证鸥,測試工程師的首要任務(wù):
1、借助開發(fā)工程師勤晚。不要從技術(shù)基礎(chǔ) 和理論開始學(xué)起枉层,在逐步應(yīng)用的學(xué)習(xí)脈絡(luò),更好的方式是直接拿他的客戶端代碼赐写,盡可能挪為自己用鸟蜡,將其變成自己的接口測試代碼。
2挺邀、站在自己的技術(shù)棧上揉忘,完成技術(shù)積累。比如已經(jīng)熟悉的測試工具端铛、測試平臺癌淮、測試框架和編碼基礎(chǔ)。
3沦补、歸入框架乳蓄。
有些開發(fā)人員很好,會給你一些學(xué)習(xí)脈絡(luò)夕膀,比如給你協(xié)議的說明文檔虚倒、代碼開發(fā)文檔、實(shí)現(xiàn)代碼等內(nèi)容产舞。但是往往通過這種方式魂奥,暫用的時(shí)間會很長,有些時(shí)候我們不需要去了解協(xié)議底層的原理易猫,只需要了解新協(xié)議是如何傳輸數(shù)據(jù)耻煤,又如何返回?cái)?shù)據(jù)庫就可以了。積累是完成任務(wù)以后去提升的事情准颓。

2哈蝇、線性接口測試代碼

在我們對接口測試代碼編寫,都是習(xí)慣性的按自己的思路一步步進(jìn)行編寫攘已,這就是所謂的線性思維炮赦。但是有時(shí)候我們就會重復(fù)的去編寫這些同樣的內(nèi)容,這個(gè)時(shí)候封裝就很重要了样勃。
websocket完整的協(xié)議代碼如下:


#引入websocket的create_connection類
from websocket import create_connection
# 建立和WebSocket接口的鏈接
ws = create_connection("ws://echo.websocket.org")
# 打印日子
print("發(fā)送 'Hello, World'...")
# 發(fā)送Hello吠勘,World
ws.send("Hello, World")
# 將WebSocket的返回值存儲result變量
result = ws.recv()
# 打印返回的result
print("返回"+result)
# 關(guān)閉WebSocket鏈接
ws.close()

3.封裝的common代碼

按極客時(shí)間老師的說法性芬,這里就是哆啦A夢,增刪改查全部進(jìn)行代碼封裝剧防,只需要通過參數(shù)調(diào)用的方式就可以簡單完成代碼的測試植锉。


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# python代碼中引入requests庫,引入后才可以在你的代碼中使用對應(yīng)的類以及成員函數(shù)
import requests
from websocket import create_connection


# 定義一個(gè)common的類峭拘,它的父類是object
class Common(object):
    # common的構(gòu)造函數(shù)
    def __init__(self,url_root,api_type):
        '''
        :param api_type:接口類似當(dāng)前支持http俊庇、ws,http就是HTTP協(xié)議棚唆,ws是WebSocket協(xié)議
        :param url_root: 被測系統(tǒng)的根路由
        '''
        if api_type=='ws':
            self.ws = create_connection(url_root)
        elif api_type=='http':
            self.ws='null'
            self.url_root = url_root


    # ws協(xié)議的消息發(fā)送

    def send(self,params):
        '''
        :param params: websocket接口的參數(shù)

        :return: 訪問接口的返回值
        '''
        self.ws.send(params)
        res = self.ws.recv()
        return res


    # common類的析構(gòu)函數(shù)暇赤,清理沒有用的資源

    def __del__(self):
        '''
        :return:
        '''
        if self.ws!='null":
            self.ws.close()

    def get(self, uri, params=None):
        '''
        封裝你自己的get請求心例,uri是訪問路由宵凌,params是get請求的參數(shù),如果沒有默認(rèn)為空
        :param uri: 訪問路由
        :param params: 傳遞參數(shù)止后,string類型瞎惫,默認(rèn)為None
        :return: 此次訪問的response
        '''
        # 拼湊訪問地址
        if params is not None:
            url = self.url_root + uri + params
        else:
            url = self.url_root + uri
        # 通過get請求訪問對應(yīng)地址
        res = requests.get(url)
        # 返回request的Response結(jié)果,類型為requests的Response類型
        return res

    def post(self, uri, params=None):
        '''
        封裝你自己的post方法译株,uri是訪問路由瓜喇,params是post請求需要傳遞的參數(shù),如果沒有參數(shù)這里為空
        :param uri: 訪問路由
        :param params: 傳遞參數(shù)歉糜,string類型乘寒,默認(rèn)為None
        :return: 此次訪問的response
        '''
        # 拼湊訪問地址
        url = self.url_root + uri
        if params is not None:
            # 如果有參數(shù),那么通過post方式訪問對應(yīng)的url匪补,并將參數(shù)賦值給requests.post默認(rèn)參數(shù)data
            # 返回request的Response結(jié)果伞辛,類型為requests的Response類型
            res = requests.post(url, data=params)
        else:
            # 如果無參數(shù),訪問方式如下
            # 返回request的Response結(jié)果夯缺,類型為requests的Response類型
            res = requests.post(url)
        return res

    def put(self,uri,params=None):
        '''
        封裝你自己的put方法蚤氏,uri是訪問路由,params是put請求需要傳遞的參數(shù)踊兜,如果沒有參數(shù)這里為空
        :param uri: 訪問路由
        :param params: 傳遞參數(shù)竿滨,string類型,默認(rèn)為None
        :return: 此次訪問的response
        '''
        url = self.url_root+uri
        if params is not None:
            # 如果有參數(shù)捏境,那么通過put方式訪問對應(yīng)的url于游,并將參數(shù)賦值給requests.put默認(rèn)參數(shù)data
            # 返回request的Response結(jié)果,類型為requests的Response類型
            res = requests.put(url, data=params)
        else:
            # 如果無參數(shù)垫言,訪問方式如下
            # 返回request的Response結(jié)果曙砂,類型為requests的Response類型
            res = requests.put(url)
        return res

    def delete(self,uri,params=None):
        '''
        封裝你自己的delete方法,uri是訪問路由骏掀,params是delete請求需要傳遞的參數(shù)鸠澈,如果沒有參數(shù)這里為空
        :param uri: 訪問路由
        :param params: 傳遞參數(shù)柱告,string類型,默認(rèn)為None
        :return: 此次訪問的response
        '''
        url = self.url_root + uri
        if params is not None:
            # 如果有參數(shù)笑陈,那么通過put方式訪問對應(yīng)的url际度,并將參數(shù)賦值給requests.put默認(rèn)參數(shù)data
            # 返回request的Response結(jié)果,類型為requests的Response類型
            res = requests.delete(url, data=params)
        else:
            # 如果無參數(shù)涵妥,訪問方式如下
            # 返回request的Response結(jié)果乖菱,類型為requests的Response類型
            res = requests.put(url)
        return res

4.調(diào)用common中的封裝后的函數(shù)


from common import Common
# 建立和WebSocket接口的鏈接
con = Common('ws://echo.websocket.org','ws')
# 獲取返回結(jié)果
result = con.send('Hello, World...')
#打印日志
print(result)
#釋放WebSocket的長連接
del con

Dubbo接口測試:
https://blog.csdn.net/cyjs1988/article/details/82495136
Protobuf接口測試:
http://www.reibang.com/p/58513863b491

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蓬网,隨后出現(xiàn)的幾起案子窒所,更是在濱河造成了極大的恐慌,老刑警劉巖帆锋,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吵取,死亡現(xiàn)場離奇詭異,居然都是意外死亡锯厢,警方通過查閱死者的電腦和手機(jī)皮官,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來实辑,“玉大人捺氢,你說我怎么就攤上這事〖羟耍” “怎么了摄乒?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長残黑。 經(jīng)常有香客問我馍佑,道長,這世上最難降的妖魔是什么萍摊? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任挤茄,我火速辦了婚禮,結(jié)果婚禮上冰木,老公的妹妹穿的比我還像新娘穷劈。我一直安慰自己,他們只是感情好踊沸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布歇终。 她就那樣靜靜地躺著,像睡著了一般逼龟。 火紅的嫁衣襯著肌膚如雪评凝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天腺律,我揣著相機(jī)與錄音奕短,去河邊找鬼宜肉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛翎碑,可吹牛的內(nèi)容都是我干的狞膘。 我是一名探鬼主播涡驮,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼她我!你這毒婦竟也來了阔蛉?” 一聲冷哼從身側(cè)響起原环,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤棒动,失蹤者是張志新(化名)和其女友劉穎恋博,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涨冀,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡填硕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蝇裤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廷支。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡频鉴,死狀恐怖栓辜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情垛孔,我是刑警寧澤藕甩,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站周荐,受9級特大地震影響狭莱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜概作,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一腋妙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧讯榕,春花似錦骤素、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至霎槐,卻和暖如春送浊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背丘跌。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工袭景, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唁桩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓耸棒,卻偏偏與公主長得像朵夏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子榆纽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容