Jmeter如何使用BeanShell取样器调用Python脚本
1、在线程组中按以下方式添加【BeanShell取样器】:

2、把以下这段代码放到【BeanShell取样器】的脚本区域:
注意点:
- (1)命令里的Python脚本路径改成自己脚本的路径,-t后面是填需要传入Python脚本的参数,可传入jmeter的变量,也可以传多个参数。
- (2)定义Jmeter中引用的变量名,记得这个变量名,后面jmeter调用时可用到。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import java.io.BufferedReader;import java.io.InputStreamReader; // 1. 命令里的路径改成自己脚本的路径,-t后面是填需要传入Python脚本的参数,可传入jmeter的变量。String command = "cmd /c python E://python_project//Python-Auto//python_jmeter//zbg_password_rsa.py -t ${pubKey}"; String var;Runtime rt = Runtime.getRuntime();Process pr = rt.exec(command); pr.waitFor(); BufferedReader b = new BufferedReader(new InputStreamReader(pr.getInputStream()));String line = "";StringBuilder response = new StringBuilder();while ((line = b.readLine()) != null) { response.append(line); } String response_data = response.toString(); System.out.println(response_data);b.close(); var = response.toString(); // 2. 定义Jmeter中引用的变量名,jmeter后面可以直接使用${变量名}调用变量;vars.put("password_str",var); //把var打印到jmeter.log的日志中,有需要可以把下方代码加上//log.info(var); |
如下图所示:

3、在Python中需要以下代码去获取jmeter传入的值,经过Python处理后,在使用打印功能传给jmeter(BeanShell取样器脚本中的Java代码作用就是接受Python脚本传过来的值,并转化为jmeter可直接调用的变量)。
|
1
2
3
4
5
6
7
8
9
10
11
12
|
import argparse# 获取jmeter传入的值,然后赋值给变量ticket,变量即可为Python调用parser = argparse.ArgumentParser()parser.add_argument("-t", "--ticket", help="这是ticket")args = parser.parse_args()ticket = args.ticket#print('你输入的值:{}'.format(ticket)) # 这是Python脚本处理过程代码,省略 # 最后Python把处理好的值传给jmeter,就是直接打印即可print('这里填需要传给jmeter的值') |
转:https://www.jb51.net/article/242071.htm
浙公网安备 33010602011771号