debugtalk.py辅助函数 - sign签名

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]
复制代码
posted @   乌醍  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示