日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

優化自動化接口測試:利用鉤子函數增強HTTP請求處理

來源: 責編: 時間:2023-09-18 21:41:57 375觀看
導讀在自動化接口測試中,我們經常需要發送HTTP請求來模擬用戶的操作并驗證接口的正確性。夠靈活處理請求參數、添加認證信息以及處理依賴參數。這正是鉤子函數的用武之地。下面勇哥將以一個實際的示例場景為例,詳細介紹如何

在自動化接口測試中,我們經常需要發送HTTP請求來模擬用戶的操作并驗證接口的正確性。夠靈活處理請求參數、添加認證信息以及處理依賴參數。這正是鉤子函數的用武之地。YXE28資訊網——每日最新資訊28at.com

下面勇哥將以一個實際的示例場景為例,詳細介紹如何利用鉤子函數進行自動化接口測試,并展示如何設計和應用這些鉤子函數。YXE28資訊網——每日最新資訊28at.com

YXE28資訊網——每日最新資訊28at.com

鉤子函數設計

遙想當年,勇哥一開始對【鉤子】也是懵逼的!!鉤子函數就是在特定事件發生前后執行的函數。通過鉤子我們可以在 HTTP 請求的不同階段執行花里胡哨的自定義操作,如修改URL、更新請求頭、請求參數加密加簽、處理響應結果...YXE28資訊網——每日最新資訊28at.com

上代碼:YXE28資訊網——每日最新資訊28at.com

```pythonclass Hooks:    def __init__(self):        self.before_request_funcs = {}        self.after_request_funcs = {}    def before_request(self, func):        """        注冊 before_request 鉤子函數        """        self.before_request_funcs[func.__name__] = func        return func    def after_request(self, func):        """        注冊 after_request 鉤子函數        """        self.after_request_funcs[func.__name__] = func        return func    def run_before_request_hooks(self, func_names, request, json_data):        """        執行 before_request 鉤子函數        """        for func_name in func_names:            if func_name in self.before_request_funcs:                func = self.before_request_funcs[func_name]                json_data = func(request, json_data)        return json_data    def run_after_request_hooks(self, func_names, request, response):        """        執行 after_request 鉤子函數        """        for func_name in func_names:            if func_name in self.after_request_funcs:                func = self.after_request_funcs[func_name]                response = func(request, response)        return response

場景:注冊用戶

模擬用戶注冊,并驗證注冊接口的正確性。同時,在每個請求中自動添加認證信息和處理依賴參數。YXE28資訊網——每日最新資訊28at.com

錢包: 封裝請求

有錢才能吃飯,所以我們看看怎么封裝代碼:YXE28資訊網——每日最新資訊28at.com

def req(url, method, **kwargs):    """    發送請求并返回響應對象    """    before_hooks = kwargs.pop('before_hooks', [])    after_hooks = kwargs.pop('after_hooks', [])    json_data = kwargs.pop('json', {})    request = requests.Request(method=method, url=url, **kwargs)    prepared_request = session.prepare_request(request)    json_data = hooks.run_before_request_hooks(before_hooks, prepared_request, json_data)    prepared_request.body = json.dumps(json_data)    response = session.send(prepared_request)    response = hooks.run_after_request_hooks(after_hooks, prepared_request, response)    return response

上述代碼中,勇哥先封裝一個http請求,在里面實現不同位置調用鉤子函數YXE28資訊網——每日最新資訊28at.com

買菜:寫測試用例

常規玩法,干百度。YXE28資訊網——每日最新資訊28at.com

def test_user_registration():    url = "http://www.baidu.com"    # url = "http://jsonplaceholder.typicode.com/posts"    data = {        "userId": "testuser",        "title": "password123",        "body": "測試玩家勇哥"    }    headers = {        "Content-Type": "application/json"    }    before_hooks = [add_authentication_headers.__name__, handle_dependent_parameters.__name__]    after_hooks = [after_dependent_parameters.__name__]    kwargs = {"json": data, "headers": headers}    return req(url, "post", before_hooks=before_hooks, after_hooks=after_hooks, **kwargs)

在上述測試用例中,我們使用req函數發送了一個POST請求來模擬用戶注冊,并對返回的響應進行了斷言驗證。YXE28資訊網——每日最新資訊28at.com

切菜:注冊前置鉤子函數

寫N個前置鉤子函數,發送注冊請求前自動添加認證信息:YXE28資訊網——每日最新資訊28at.com

@hooks.before_requestdef add_authentication_headers(request, json_data):    """    添加認證頭信息    """    print("前置鉤子函數,添加認證頭信息", request)    request.headers["Authorization"] = "Bearer YOUR_AUTH_TOKEN"    return json_data@hooks.before_requestdef handle_dependent_parameters(request, json_data):    """    處理依賴參數    """    print("前置鉤子函數,處理依賴參數", request)    json_data["verification_code"] = get_verification_code()    return json_data

定義一個add_authentication_headers函數,它是一個前置鉤子函數。在這個鉤子函數中,我們通過調用get_access_token函數獲取訪問令牌,并將其添加到請求的Authorization頭信息中。YXE28資訊網——每日最新資訊28at.com

通過注冊該鉤子函數,每次發送請求前都會自動添加認證信息,無需在每個測試用例中重復編寫。YXE28資訊網——每日最新資訊28at.com

切菜前的工具箱:封裝公共方法

def get_verification_code():    # 實現獲取驗證碼的邏輯    return "YOUR_VERIFICATION_CODE"

上述代碼是可以是一些公共函數,以便全局使用,比如我們這里寫一些獲取驗證碼的方法YXE28資訊網——每日最新資訊28at.com

煮菜:處理依賴參數

處理一些依賴參數,例如在注冊用戶之前需要獲取一個驗證碼,并將驗證碼添加到注冊請求中。YXE28資訊網——每日最新資訊28at.com

@hooks.after_requestdef after_dependent_parameters(request, response):    """    處理后置    """    print("發送請求后執行", request, "后置鉤子函數,處理依賴參數", response)    return response

我們又定義了一個后置鉤子函數。在這個鉤子函數中,我們調用after_dependent_parameters函數處理一些依賴數據,并返回任意結果。YXE28資訊網——每日最新資訊28at.com

通過注冊該鉤子函數,每次發送請求前以及發送請求后都會自動處理依賴參數,使我們的測試用例更加簡潔和可維護。YXE28資訊網——每日最新資訊28at.com

上菜:執行測試用例

可以按照這種方式執行測試用例,并觀察鉤子函數的作用。:YXE28資訊網——每日最新資訊28at.com

if __name__ == "__main__":    res = test_user_registration  # 執行測試    print("打印看看響應結果",res)

輸出結果如下:YXE28資訊網——每日最新資訊28at.com

YXE28資訊網——每日最新資訊28at.com

執行test_user_registration()函數來執行我們的測試用例,但是這個測試用例在前面已經被我們注冊了很多鉤子函數,所以不需要額外處理,我們在買菜這部分就已經實現了,通過不同的函數名,執行不同的鉤子函數,非常靈活,擴展性非常強。YXE28資訊網——每日最新資訊28at.com

吃飽擦嘴

以上就是勇哥使用鉤子函數在自動化接口測試中實現了對HTTP請求的增強和擴展的示例和思路,希望能夠為各位在自動化接口測試中的工作帶來一些啟發和幫助。YXE28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-10475-0.html優化自動化接口測試:利用鉤子函數增強HTTP請求處理

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: C語言操作寄存器和函數指針

下一篇: 別再用 “! = null” 做判空了!

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
免费观看欧美在线视频的网站| 亚洲精品中文字幕在线观看| 国产精品久久一卡二卡| 国产精品毛片va一区二区三区 | 欧美精品在线看| 欧美电影免费观看网站| 欧美日韩免费一区| 国产日韩一区| 亚洲国产欧美一区二区三区丁香婷| 91久久午夜| 午夜欧美电影在线观看| 久久综合伊人77777尤物| 欧美日韩国产小视频在线观看| 国产精品久久国产三级国电话系列| 国内激情久久| 一本大道av伊人久久综合| 性娇小13――14欧美| 久久久久久久一区二区| 欧美日韩精品在线视频| 国产一区二区黄| 亚洲精品极品| 欧美一区二区三区四区在线观看地址| 免费人成网站在线观看欧美高清| 国产精品h在线观看| 伊人一区二区三区久久精品| 亚洲午夜av在线| 久久综合99re88久久爱| 国产精品久久久久久久久搜平片 | 亚洲视频在线视频| 久久国产精品色婷婷| 欧美日韩国产123区| 国内精品久久久久久久影视蜜臀| 亚洲美女在线视频| 久久久久久一区| 国产精品久久久99| 亚洲国产精品一区二区久| 亚洲欧美视频一区| 欧美精品久久久久久久久老牛影院| 国产亚洲欧美一区| 亚洲图片在线观看| 欧美精品七区| 在线观看91精品国产麻豆| 午夜日韩在线观看| 欧美日本一区| 在线看国产一区| 欧美一区二区三区四区在线观看地址 | 一区二区三区欧美| 免费日韩精品中文字幕视频在线| 国产欧美日韩伦理| 中文欧美在线视频| 欧美精品日韩| 亚洲成人在线| 久久国内精品自在自线400部| 欧美午夜宅男影院在线观看| 91久久国产精品91久久性色| 久久久久一区二区| 国产婷婷精品| 香港成人在线视频| 国产精品久久毛片a| 9l视频自拍蝌蚪9l视频成人| 欧美高清不卡| 亚洲国产精品精华液2区45| 久久久久久久国产| 国产亚洲福利| 欧美一区二区三区免费看| 国产精品极品美女粉嫩高清在线 | 亚洲免费在线观看视频| 欧美三级黄美女| 夜夜嗨一区二区| 欧美日韩精品在线播放| 亚洲伦理精品| 欧美另类视频在线| 亚洲精品免费一二三区| 欧美成人一区二区三区| 亚洲国产三级在线| 欧美成人精精品一区二区频| 亚洲高清视频中文字幕| 麻豆国产精品va在线观看不卡| 国产日韩欧美一区二区三区四区| 亚洲一区二区四区| 国产精品老牛| 亚洲欧美一区二区三区久久| 国产精品丝袜白浆摸在线| 亚洲欧美激情一区| 国产欧美日韩视频| 欧美专区第一页| 国产一区二区三区在线观看精品| 久久成人在线| 伊人激情综合| 嫩草国产精品入口| 亚洲精品一二| 欧美日韩国产综合网 | 一区免费在线| 欧美成年人视频| 日韩视频一区二区在线观看| 欧美日韩在线精品| 亚洲在线日韩| 国产一区二区0| 久久综合九色综合网站| 亚洲国产另类久久久精品极度| 欧美xart系列在线观看| 亚洲免费av片| 国产精品区一区| 欧美在线亚洲综合一区| 一区免费观看视频| 欧美国产激情二区三区| 在线亚洲一区观看| 国产欧美日韩视频在线观看| 久久久久久久综合狠狠综合| 亚洲激情视频网站| 欧美婷婷在线| 久久国产精品久久精品国产| 亚洲电影免费观看高清完整版在线观看 | 激情综合久久| 欧美韩日一区二区| 亚洲一区视频在线| 国内精品久久久| 欧美福利一区二区| 亚洲专区一区二区三区| 狠久久av成人天堂| 欧美精品在欧美一区二区少妇| 亚洲综合色噜噜狠狠| 影视先锋久久| 欧美日韩综合精品| 欧美专区日韩专区| 亚洲久久一区二区| 国产女精品视频网站免费| 久久躁日日躁aaaaxxxx| 在线中文字幕不卡| 狠狠色丁香久久婷婷综合_中| 欧美精品久久久久a| 欧美一区高清| 亚洲精品中文字幕女同| 国产日韩欧美综合精品| 欧美激情成人在线| 欧美怡红院视频| 亚洲精品国产精品乱码不99按摩| 国产精自产拍久久久久久| 免费国产一区二区| 亚洲欧美日韩一区二区三区在线观看| 亚洲成人资源| 国产精品亚洲人在线观看| 美女精品一区| 亚洲欧美日本国产有色| 亚洲国产婷婷香蕉久久久久久99| 国产精品女主播| 欧美电影免费观看| 久久国产精品网站| 亚洲一区二区三区色| 亚洲第一福利在线观看| 国产伦精品一区二区三区视频孕妇 | 久久精品五月婷婷| 亚洲午夜精品久久久久久app| 一区二区三区在线免费视频| 国产精品久久久久久久电影 | 国产性色一区二区| 欧美视频一区| 欧美二区不卡| 欧美一区国产在线| 一区二区三区国产在线观看| 在线精品高清中文字幕| 国产精品一区二区久激情瑜伽| 欧美精品一区二区精品网| 久久久久久久999精品视频| 亚洲欧美日韩一区二区三区在线观看| 亚洲精品国产精品国产自| 国语对白精品一区二区| 国产精品视频免费观看www| 欧美日韩aaaaa| 女人色偷偷aa久久天堂| 久久久www成人免费毛片麻豆| 亚洲欧美日韩系列| 亚洲一级二级| 99精品福利视频| 亚洲激情二区| 在线成人h网| 国内精品一区二区| 国产精品午夜电影| 欧美午夜在线| 欧美精品在线免费观看| 欧美gay视频| 久久在线播放| 久久免费一区| 久久久高清一区二区三区| 午夜视频在线观看一区二区三区| 一区二区福利| 99精品热6080yy久久| 亚洲伦理久久| 亚洲精品日日夜夜| 亚洲日本va午夜在线影院| 亚洲高清影视| 亚洲成人在线免费| 136国产福利精品导航网址| 黄色成人在线网址| 黑人巨大精品欧美黑白配亚洲| 国产一区二区精品久久99| 国产午夜亚洲精品理论片色戒| 国产精品综合网站| 国产日本欧美一区二区三区| 国产麻豆视频精品| 国产午夜精品全部视频在线播放| 国产日韩欧美成人| 国产一区二区三区不卡在线观看| 国产亚洲精品aa|