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)