在使用jmeter过程中,例如登录接口中signature字段是多个字符串拼接后md5加密所得,用jmeter自带的函数操作比较麻烦,我这里选择使用jmeter去加载本人更加熟悉的Python脚本,来解决此问题。
1.首先在官网下载支持Python语言的jmeter语言扩展包
下载地址:Jython Standalone
2.把下载的jython-standalone-2.7.2.jar 放到 jmeter的lib/ext文件夹。重启jmeter,此时就可以看到支持Python语言(如果不重新启动默认不会生效)
3.此时新建JSR223 Sampler,语言选择jython
4.通过Python实现登录signature的md5加密。
拷贝自己已经写好的Python代码到Script区域:修改部分:1.获得jmeter已有的参数用vars.get("参数名"),2.将处理好的值传给jmeter用vars.put("引用参数名",Python代码块中参数)
import hashlib
import time
time_stamp = str(int(time.time())) # 获取时间戳
user = vars.get("user") # 获取jmeter参数user
pwd = vars.get("pwd") # 获取jmeter参数pwd
key = vars.get("sign_key") # 获取jmeter参数sign_key
sign_body = '{"YHB": {"SJHM": "%s", "MM": "%s"}}' % (user, pwd) # 将字符串参数组合起来
sign_str = 'Body=%s' % sign_body + '&Timestamp=%s' % time_stamp + key # 将字符串参数组合起来
m = hashlib.md5()
m.update(sign_str.encode('UTF-8'))
signature = m.hexdigest() # 将字符串sign_strMD5加密
vars.put("sign_body_new",sign_body) # 将参数sign_body传给jmeter,并将变量命名为sign_body_new
vars.put("signature_new",signature)
vars.put("time_stamp_new",time_stamp)
log.info("==========="+time_stamp+"============") # 日志打印
log.info("==========="+signature+"============")
试运行的时候,打开选项-日志,查看后台运行日志
5.运行结果显示,已成功加密,接下来就直接在jmeter中使用上述变量即可。
最后结果:加密成功