欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > jmeter常用配置元件介绍总结之jsr223执行python脚本

jmeter常用配置元件介绍总结之jsr223执行python脚本

2025/4/20 4:43:40 来源:https://blog.csdn.net/gahsfjshf/article/details/143599770  浏览:    关键词:jmeter常用配置元件介绍总结之jsr223执行python脚本

系列文章目录
安装jmeter

jmeter常用配置元件介绍总结之jsr223执行python脚本

    • 1.安装jsr223执行python插件
    • 2.基础语法介绍
      • 2.1.log
      • 2.2.parameters向脚本传参与接参
      • 2.3.vars
      • 2.4.props
      • 2.5.prev
    • 3.常用脚本
      • 3.1.MD5加密单个参数:
      • 3.2.MD5加密多个参数:
      • 3.3.URLencode,GBK编码\UTF-8编码

1.安装jsr223执行python插件

首先需要下载python插件,
可以去官网下载:jython-standalone-2.7.2.jar
也可以通过网盘分享的文件:jython-standalone-2.7.2.jar
链接: https://pan.baidu.com/s/18lGXyXi5MaiVhou74h4Qeg?pwd=q9ra 提取码: q9ra
–来自百度网盘超级会员v1的分享

在这里插入图片描述

下载好后,将文件放到jmeter的lib/ext目录中,重启jmeter即可

在这里插入图片描述
如图,以下jsr223相关的都是可以执行python脚本的,语言只需要选择jython即可
在这里插入图片描述

2.基础语法介绍

主要是介绍jmeter相关对属性、变量相关的操作语法,python语法这里不做介绍,我这里用JSR223 Sampler进行演示

2.1.log

功能:打印日志
三个日志级别info、warn、error,主要是用来打日志方便调试找问题

log.info("这是要输出的日志内容")
log.warm("这是要输出的警告日志内容")
log.error("这是要输出的错误日志内容")

在这里插入图片描述

2.2.parameters向脚本传参与接参

功能:传递参数到脚本

注意:
1.可以传字符串、基础数据类型、数组,传的参数是字符串时,需要加引号
2.需要传多个参数时,用空格分隔
3.也可以传引用的变量如:${value1} ${value2}同样多个参数空格分隔
如图:
在这里插入图片描述

向脚本传递参数后,我们就要去获取接收传过来的参数,这里就用了到args
args
功能:获取传递给脚本的参数
args:获取传递的所有参数,返回一个数组
args[n]:根据返回的参数数组下标,取值,数组下标是从0开始
传值、取值、打印演示如图:

注意:这里可能会出现中文字符编码问题,如图
在这里插入图片描述解决办法:在代码前加上一句代码
import sys
reload(sys)
sys.setdefaultencoding(‘utf8’)

传参-取值-打印演示如图:

在这里插入图片描述
参数传引用演示:
在这里插入图片描述
在这里插入图片描述

2.3.vars

功能:操作jmeter变量

#创建、更新一个变量,创建后可以在jmeter中其他的地方使用
vars.put("变量名",变量值)
#获取变量的值
vars.get("name")

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4.props

功能:用于操作jmeter属性,可以跨线程操作,语法和vars类似:

#设置属性
props.put("属性名",属性值)
#获取属性的值
props.get("属性名")

如图
在这里插入图片描述

2.5.prev

功能:获取取样器的相关信息,如:域名、路径、端口

#获取请求头
prev.getRequestHeaders()
#获取请求响应代码
prev.getResponseCode()
#获取响应消息
prev.getResponseMessage()
#获取响应数据
prev.getResponseDataAsString()

如图:
在这里插入图片描述

对象、方法还有很多,这里只对一些基础常用的做了介绍

3.常用脚本

3.1.MD5加密单个参数:

import hashlib
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#获取传递的name参数
value=vars.get("name")
#进行MD5加密
endValue=hashlib.md5(value.encode(encoding='UTF-8')).hexdigest()
print(endValue)
log.info("MD5="+endValue)
#创建MD5value变量,并赋于MD5值,脚本外其他地方使用该变量用该格式:${MD5value}
vars.put("MD5Value",endValue)

3.2.MD5加密多个参数:

import hashlib
import sys
reload(sys)
sys.setdefaultencoding('utf8')
arr=args
allSrring=""
#将所有参数加起来
for value in arr:allSrring=allSrring+value
print(allSrring)
log.info("参数连接后的值="+allSrring)
#进行MD5加密
endValue=hashlib.md5(allSrring.encode(encoding='UTF-8')).hexdigest()
print(endValue)
log.info("MD5="+endValue)
#创建MD5value变量,并赋于MD5值,脚本外其他地方使用该变量用该格式:${MD5value}
vars.put("MD5value",endValue)

3.3.URLencode,GBK编码\UTF-8编码

import urllib
import hashlib
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#content是需要加密的变量内容,我是在用户自定义变量元件里提前定义好了content变量和值,这里直接获取
value=vars.get("content")
#把GBK换成UTF-8就可以进行UTF-8编码
URLcoed=urllib.quote(value.encode("GBK"))
vars.put("urlcode",URLcoed)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词