1. 程式人生 > 其它 >debugtalk.py輔助函式 - sign簽名

debugtalk.py輔助函式 - sign簽名

介面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):
        m 
= 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)
testcase/login_sign.yml
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]