AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

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

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

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

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

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

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

鉤子函數設計

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

上代碼:nyN28資訊網——每日最新資訊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

場景:注冊用戶

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

錢包: 封裝請求

有錢才能吃飯,所以我們看看怎么封裝代碼:nyN28資訊網——每日最新資訊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請求,在里面實現不同位置調用鉤子函數nyN28資訊網——每日最新資訊28at.com

買菜:寫測試用例

常規玩法,干百度。nyN28資訊網——每日最新資訊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請求來模擬用戶注冊,并對返回的響應進行了斷言驗證。nyN28資訊網——每日最新資訊28at.com

切菜:注冊前置鉤子函數

寫N個前置鉤子函數,發送注冊請求前自動添加認證信息:nyN28資訊網——每日最新資訊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頭信息中。nyN28資訊網——每日最新資訊28at.com

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

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

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

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

煮菜:處理依賴參數

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

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

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

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

上菜:執行測試用例

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

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

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

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

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

吃飽擦嘴

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

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

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

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

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

標簽:
  • 熱門焦點
  • 石頭智能洗地機A10 Plus體驗:雙向自清潔治好了我的懶癌

    一、前言和介紹專為家庭請假懶人而生的石頭科技在近日又帶來了自己的全新旗艦新品,石頭智能洗地機A10 Plus。從這個產品名上就不難看出,這次石頭推出的并不是常見的掃地機器
  • 8月總票房已突破10億!《封神》第一:口碑已經成了

    8月5日消息,據燈塔專業版數據,截至8月5日9時35分,8月總票房(含預售)已突破10億。其中,《封神》以大比分的優勢領先。根據官方消息,目前該片總票房已經超過14.
  • 摸魚心法第一章——和配置文件說拜拜

    為了能摸魚我們團隊做了容器化,但是帶來的問題是服務配置文件很麻煩,然后大家在群里進行了“親切友好”的溝通圖片圖片圖片圖片對比就對比,簡單對比下獨立配置中心和k8s作為配
  • 一篇聊聊Go錯誤封裝機制

    %w 是用于錯誤包裝(Error Wrapping)的格式化動詞。它是用于 fmt.Errorf 和 fmt.Sprintf 函數中的一個特殊格式化動詞,用于將一個錯誤(或其他可打印的值)包裝在一個新的錯誤中。使
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個大新聞是Meta AI推出了新的開源授權的大型語言模型Llama 2。這是一項非常重要的進展:Llama 2可免費用于研究和商業用途。(幾小時前,swyy發現它已從LLaMA 2更名為Lla
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的“征求意見版”:1、取消P序列
  • 2022爆款:ROG魔霸6 冰川散熱系統持續護航

    喜逢開學季,各大商家開始推出自己的新產品,進行打折促銷活動。對于忠實的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現在的
  • 華為舉行春季智慧辦公新品發布會 首次推出電子墨水屏平板

    北京時間2月27日晚,華為在巴塞羅那舉行春季智慧辦公新品發布會,在海外市場推出之前已經在中國市場上市的筆記本、平板、激光打印機等辦公產品,并首次推出搭載
  • Meta盲目擴張致超萬人被裁,重金押注元宇宙而前景未明

    圖片來源:圖蟲創意日前,Meta創始人兼CEO 馬克·扎克伯發布公開信,宣布Meta計劃裁員超11000人,占其員工總數13%。他公開承認了自己的預判失誤:“不僅
Top