Jmeter 调用python3脚本

前言:

Jmeter 调用 Jython的Jar包,虽然可以执行python代码,但是只支持python2.7及2.7以下版本的,目前使用的都是py3.0以上的版本,所以放弃这种方法。

 

解决方法:

通过jmeter的BeanShell取样器,通过dos命令(间接)调用python脚本,就可以达到目的。

String command = "cmd /c python D:\\python_work\\automation\\mq_send_message.py";
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);

Jmeter 调用python3脚本_第1张图片

 

 

如果想用python脚本执行的结果作为Jmeter的自定义参数如何做?

可以在python脚本将生成的结果,用print函数将结果打印出来,这样beanshell执行dos命令调用python脚本就能输出结果。

 

1.假设我们的ID是需要我们的python脚本去生成的,python的代码如下图所示

from datetime import datetime
 
 
def gen_id():
    id= datetime.now().strftime('%Y%m%d%H%M%S')
    print(id) # 需要将结果打印出来,不然dos命令调用后,结果为空
 
 
if __name__ == '__main__':
    gen_id()

2.通过beanshell获取的结果,是在命令行调用后显示的结果。

Jmeter 调用python3脚本_第2张图片

3.beanshell 取样器的具体代码参考如下:


import java.io.BufferedReader;
import java.io.InputStreamReader;
 
String command = "cmd /c python D:\\python_work\\demo\\gen_param.py";
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();
//System.out.println(response.toString());
vars.put("ID",response.toString()); //把结果赋值给变量 ID ,方便后面调用

 

你可能感兴趣的:(jmeter,python,脚本语言)