介紹下hook函數
1. setup_hooks
setup_hooks: 在 HTTP 請求發送前執行 hook 函數,主要用于準備工作;也可以實作對請求的 request 内容進行預處理。
在測試步驟層面的 setup_hooks 函數中,除了可傳入自定義參數外,還可以傳入 $request,該參數對應着目前測試步驟 request 的全部内容。因為 request 是可變參數類型(dict),是以該函數參數為引用傳遞,當我們需要對請求參數進行預處理時尤其有用。
2. teardown_hooks
teardown_hooks: 在 HTTP 請求發送後執行 hook 函數,主要用于測試後的清理工作;也可以實作對響應的 response 進行修改,例如進行加解密等處理。
在測試步驟層面的 teardown_hooks 函數中,除了可傳入自定義參數外,還可以傳入 $response,該參數對應着目前請求的響應執行個體(requests.Response)。
封裝方法
def get_x_param_key(body):
"""
生成x_param_key
:param body:
:return:
"""
date_time = int(round(time.time() * 1000))
md5 = hashlib.md5("{}{}".format(hashlib.md5(body.encode()).hexdigest(), date_time).encode()).hexdigest()
return "{}{}{}{}".format(md5[0:10], md5[10:len(md5) - 10], date_time, md5[len(md5) - 10:])
def headers(request: dict):
"""
封裝headers
:param request:
:return:
"""
# 擷取headers,此時headers={}
header_dict = request.get("headers", {})
# 擷取json,此時json=實際yaml中的json
json_dict = request.get("req_json")
# 擷取x-param-key需要的body
body = ""
if None is not json_dict:
body = json.dumps(request['req_json'])
# 把header需要的字段傳入
header_dict['x-param-key'] = get_x_param_key(body)
header_dict['Content-Type'] = "application/json"
# 最後返給request
request["headers"] = header_dict
yaml中的調用方法
config:
name: ×××
variables:
username: ${super_admin()}
base_url: ${base_url()}
teststeps:
- name: getIsVisible
setup_hooks: # 調用鈎子函數
- ${headers($request, $username)}
request:
json:
username: $username
method: POST
url: ×××
validate:
- eq:
- status_code
- 200
作者:gz_tester
連結:https://www.jianshu.com/p/b0bad20ec015
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。