当前位置: 首页>前端>正文

Jmeter引用py脚本

背景

当项目的接口需要一些验签,签名,加密等算法,需要通过对jmeter进行二次开发。jmeter二次开发需要使用java语言,对于java语言稍弱,则可以使用pthon来实现加密,然后使用jmeter调用py脚本

实现

  • 需求:jmeter传参给python,python对参数进行md5加密后,jmeter提取加密sign

一、python脚本编写

  • 目录结构如下
    Jmeter引用py脚本,第1张
1、创建py文件,实现对参数进行MD5加密,代码如下
  • 通过 sys.argv来接收jmeter传递的值
  • 加密后将值打印出来,之后才可在jmeter响应结果中提取值
def encode_md5():
  parameter = sys.argv  # 接收jmeter传参,返回一个列表,列表第一个值是文件的路径
  cusOrderNo = parameter[1] # 交易中心单号
  payAmt = parameter[2]  # 注资金额
  orderAmt = parameter[3]  # 换算金额

  value = {}
  data = {"cusOrderNo": "MTrade20230619132405052", "customerNo": "G21050001", "operatorCode": "vae111",
        "operatorName": "vae111", "orderAmt": 1200, "orderNo": "20220530101252274176181440800", "payAmt": 200,
        "payTime": "2023-06-18 21:51:55", "returnCode": "", "returnMsg": "vae111 已到账 ", "status": 100,
        "tradeType": 10, "userAcct": "子岩", "userName": "子岩"}
  data.update({"cusOrderNo": cusOrderNo})
  data.update({"payAmt": int(payAmt)})
  data.update({"orderAmt": int(orderAmt)})

  signkey = "1234"
  signstr = json.dumps(data) + signkey
  sign = hashlib.md5(signstr.encode(encoding="utf-8")).hexdigest()  # MD5加密
  value.update({"sign": sign})
  print(value)  # 打印
encode_md5() # 调用
2、创建bat文件
  • 语法:python py文件绝对/相对路径 或者 python py文件绝对/相对路径 %*
  • %* :当python需要接收jmeter的传参时,需要加上%,否则不需要写%*
  • 注意:如果此处写相对路径,那需要将py文件放到jmeter的bin目录下,否则jmeter运行时会提示找不到文件
python D:\tool\python\jm_pay\FFPay.py %*

二、jmeter操作

1、创建OS Process Sampler取样器
Jmeter引用py脚本,第2张
2、填写Command和需要传的参数
Jmeter引用py脚本,第3张
3、执行
运行后结果如图:
Jmeter引用py脚本,第4张
可添加正则提取器获取sign值
Jmeter引用py脚本,第5张
正则表达式:{'sign': '(.*?)'}
Jmeter引用py脚本,第6张
添加Debug 后置处理器,可看到提取到sign值
Jmeter引用py脚本,第7张

https://www.xamrdz.com/web/2bd1994833.html

相关文章: