前言:
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);
如果想用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获取的结果,是在命令行调用后显示的结果。

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 ,方便后面调用
版权声明:本文为qic1993原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。