debugtalk.py輔助函式 - sign簽名
阿新 • • 發佈:2022-05-23
介面sign簽名規則:
1.拼接字串,先去除sign引數本身,然後去掉值是空的,按照引數名字元升序排列
2.做引數和值的拼接,去掉=和&符號
3.在上面拼接得到的字串後加上驗證金鑰apikey,得到新的字串
4.將這個字串換為小寫進行md5計算,得到的值就是sign簽名值
注意:計算md5之前請確保介面與接入方的字串編碼一致,如統一使用utf-8編碼或者GBK編碼,如果編碼不一致則計算出來的簽名會校驗失敗
debugtalk.py
import hashlib def sign_budy(body, apikey="123"): '''請求body sign簽名''' # 列表生成式,生成key=value的格式 a = ["".join(i) for i in body.items() if i[1] and i[0] != "sign"] # print(a) # 引數名ASCII碼從小到大排序 strA = "".join(sorted(a)) # 在strA後面拼接上apikey得到stri字串 stri = strA+apikey # 將stri字串轉換為小寫字串後進行md5運算 # md5加密 def jiamd5(src): mtestcase/login_sign.yml= hashlib.md5() m.update(src.encode('utf-8')) return m.hexdigest() sign = jiamd5(stri.lower()) # print(sign) return sign def login_sign(request): body = request.get("req_json") print("簽名前body:", body) sign = sign_body(body=body, apikey="123") print("sign", sign) request["req_json"]["sign"] = sign print("request:", request) if __name__ == "__main__": print(get_user_psw(3)) print(register_user()) body = { "username": "test", "password": "123456" } r = sign_budy(body=body, apikey="123") print(r)
config: name: 登入用例 base_url: http://127.0.0.1:埠號 variables: user: test psw: "123456" export: - token teststeps: - name: step-登入 setup_hooks: - ${login_sign($request)} request: method: POST url: /api/test/login json: username: $user password: $psw sign: XXXXX extract: token: body.token validate: - eq: [status_code, 200] - eq: [body.code, 0] - eq: [body.msg, login success!] - eq: [body.username, $user] - len_eq: [body.token, 40]