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]
分类:
HttpRunner3
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报