Jmeter之Python支持

一、环境准备

1、下载Jython jar包:https://www.jython.org/download
Jmeter之Python支持_第1张图片
2、把下载的Jython 的jar包放到 jmeter的lib文件夹。重启jmeter。

3、线程组中添加 JSR223 Sampler。
Jmeter之Python支持_第2张图片
4、设置JSR223 Sampler,选择Python语言。
Jmeter之Python支持_第3张图片
5、在脚本当中编写python代码,这里写了一个随机获取0到100之间的整数
在这里插入图片描述
需要注意的是,以下代码很重要:

SampleResult.setResponseData("{}".format(data)) -----设置返回数据,必须是“xxx”,所以可以用"{}".format(数据)进行传输

6、利用正则表达式提取器获取Python代码返回值
Jmeter之Python支持_第4张图片
7、在进行http请求时利用关联获取Python返回值进行请求参数的参数化

8、发送请求后,可以看到请求数据是从Python代码中返回出来的数据

备注:Jmeter中关于JSR223的元件有:
JSR223 PreProcessor
JSR223 Timer
JSR223 Sampler
JSR223 PostProcessor
JSR223 Assertion
JSR223 Listener

9、python脚本中常用的函数、代码

param =vars.get(‘orderNo’) #orderNo为jmeter内置空间变量,通过vars.get()方法赋值给python变量param,才能在python语法中识别,注意JSR223python脚本中jmeter内置空间变量需要使用引号,单引号或者双引号都可以,python变量不需要

vars.put(“taskId”,newtaskId) #将python变量newtaskId赋值给jmeter内置空间变量taskId,只有将变量转为jmeter内置空间变量,才能在jmeter中使用

SampleResult.setResponseData("{}".format(data)) -----设置返回数据,如果返回值是变量,可以用"{}".format()进行传输,其中变量data必须为字符串类型,且变量为python变量;如果返回值为字符串,则直接如SampleResult.setResponseData(“success”)

SampleResult.setResponseCode(“200”) -----设置http响应状态码,如200、500

SampleResult.setSuccessful(True/False) -----设置请求成功或者失败,True表示成功,False表示失败

import sys
sys.setdefaultencoding(‘utf8’) #保证结果树的响应数据中的中文不为乱码,否则会提示错误信息:jmeter python Cannot create PyString with non-byte value

10、python脚本中若使用到相对路径:相对路径的当前目录为jemter执行文件的目录,即bin目录
路径用法:

import os

print os.getcwd()  #获取当前目录,在jmeter中即为类似:D:\apache-jmeter-4.0\bin
print os.path.abspath(os.path.dirname(os.getcwd())) #获取上级目录
print os.path.abspath(os.path.join(os.getcwd(), ".."))  #获取上级目录
print os.path.abspath(os.path.join(os.getcwd(), "../..")) #获取上上级目录
path = os.path.join(base_dir, '123.txt') #拼接文件路径
lastpath = os.path.join(firstpath, r'data/orderNo.txt') #拼接文件路径

你可能感兴趣的:(性能测试)