在Jmeter中添加的JSR223 Sample中python脚本中如下:
import hashlib
def get_app_sign(data_dict, secret):
params_list = sorted(data_dict.items(), key=lambda e: e[0], reverse=False)
params_str = "".join("{}{}".format(k, v) for k, v in params_list) + 's' + secret
s = hashlib.sha1()
s.update(params_str.encode())
return s.hexdigest().upper()
sid = "${sessionid}" #1.调用jmeter中的变量
data_dict = {
"timestamp": 123,
"device": "app",
"session_id": sid #因为1中的sid = "${sessionid}",在此处就可以直接传入jmeter中的变量。
}
secret = "y"
result = get_app_sign(data_dict, secret)
results = data_dict["session_id"]
vars.put('jp',result) #将result以jp变量名导到jmeter空间中去,到时候我们就可以在jmeter直接调用:${jp}
vars.put('jps',results)
另外对于有变量的,建议添加Debug Sampler,在结果树中
查看:
看到jp,即我们通过python脚本生成的变量,已经可以在jmeter中调用。
另外如果有在Python中传入中文字符,在python脚本开头引入:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
发现我们后面导出来的变量在Debug Sampler中显示的是乱码,如何操作,请大家指示....
解决方法:
[code=python]
data_dict = {
"timestamp": 123,
"device": "app",
"session_id": sid,
"okc": "呵呵"
}
results1 = data_dict["okc"].decode('utf-8')
vars.put('jps1',results1)
将你在py脚本中所要传的变量,经过decode('utf-8'),比如results1 = data_dict["okc"].decode('utf-8');再vars.put('jps1',results1)抛出到Debug Sampler,就可以查看到: