httprunnerManager- Hook機制


一、Hook引入背景
若接口在測試前后需要進行特殊處理,如執行前的初始化操作、執行完成后的等待操作。類似於 unittest 中的 setUp() 和 tearDown() 方法,HttpRunner中的Hook功能也支持此類操作。
setup_hooks:在HTTP請求發送前執行hook函數,主要用於准備工作;也可實現對請求的request內容進行預處理
teardown_hooks:在HTTP請求發送后執行hook函數,主要用於測試后的清理工作;也可實現對響應的response 進行修改,例如進行加解密等處理
 
二、實踐案例
案例描述:設置接口請求之后如果響應狀態碼為200,就等待100ms;否則就按照自定義設定的時間進行等待
 
測試接口:http://httpbin.org/get
請求類型:GET
1.編輯debugtalk.py代碼,創建輔助函數sleep()
debugtalk.py
import hashlib
import time

# 定義獲取sign的方法,傳遞用戶名和密碼參數
def getSign(user,passwd):
    str = user+passwd   # 拼接用戶名+密碼的字符串
    md5 = hashlib.md5() # 調用hashlib模塊的md5()方法
    md5.update(str.encode(encoding='utf-8'))  # 對str進行utf-8格式編碼,然后用md5加密
    sign = md5.hexdigest()  # md5加密,並以16進制的字符串進行存儲到sign變量
    return sign
# 根據給定的 [用戶名+密碼] 生成md5加密的摘要信息,並返回sign的結果
print(getSign('admin','123456'))

def sleep(response,t):
    if response.status_code==200:
        time.sleep(0.1)
    else:
        time.sleep(t)   # 根據t值,延遲設定的時間

(PS:getSign() 方法為上文所用到的md5加密函數,本文可暫時不調用該函數)

 
2.創建用例,引用輔助函數
新建用例test_get_request_hook,本次在非200狀態碼時自定義延遲2s響應時間,則在其中設置引用輔助函數 ${sleep($response,2)}
hooks中引用輔助函數:
操作:variables/parameters --> add hooks --> teardown_hooks:填寫引用的輔助函數

 

對響應狀態碼(status_code)設置斷言:
操作:extract/validate --> add validate --> validate:設置斷言所檢查的響應字段、邏輯關系、字符類型、預期值
 

 

執行用例:
200狀態,延遲0.1s響應時間
 

 

構造非200響應狀態,如404狀態。修改接口地址為:http://httpbin.org/getaaa
404狀態,延遲2s響應時間
 


免責聲明!

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



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