现在jmeter里创建beanshell,并写好如下代码:
log.info("......<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
import java.io.BufferedReader;
import java.io.InputStreamReader;
// prev.getResponseDataAsString()获取上条用例的返回结果
String command = "cmd /c python D:\\2020\\pythonProjectTest2021-5-24\\testUDP\\Jmeter_Script_01.py -t1 " + prev.getResponseDataAsString();
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();
log.info(command); // 日志里打印commannd,调试用,跑的时候可关闭
log.info(response_data); // 日志里打印返回的结果,调试用,跑的时候可关闭
log.info("......>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
//System.out.println(response.toString()); 输出到jmeter的开启cmd
//vars.put("TEST",response_data); //把结果赋值给变量 TEST ,方便后面调用
Python里十六进制转字符串方法一(用binascii):
import argparse # 这下面无法导入其他未使用的模块,比如下面导入了import chardet(未被使用),那么在jmeter里就无法输出print的值了
import binascii
parser = argparse.ArgumentParser(description="Demo of argparse")
# 在命令行中可以输入--help或-h来显示这行定义的内容,这里的-t1和--test1意义相同,但是在命令行中,如果同时写了-t1和--test1,则以--test1为准
parser.add_argument("-t1", "--test1", default="测试1", help="这是test1")
args = parser.parse_args()
param1 = args.test1
# param1 = param1.encode("utf-8")
param1 = binascii.unhexlify(param1)
if __name__ == "__main__":
print('{param1}'.format(param1=param1.decode("utf-8")))
Python里十六进制转字符串方法二(用base64,如’a’ =base16=> b’61’):
import argparse # 这下面无法导入其他未使用的模块,比如下面导入了import chardet(未被使用),那么在jmeter里就无法输出print的值了
import base64
parser = argparse.ArgumentParser(description="Demo of argparse")
# 在命令行中可以输入--help或-h来显示这行定义的内容,这里的-t1和--test1意义相同,但是在命令行中,如果同时写了-t1和--test1,则以--test1为准
parser.add_argument("-t1", "--test1", default="测试1", help="这是test1")
args = parser.parse_args()
param1 = args.test1
# param1 = param1.encode("utf-8")
param1 = base64.b16decode(param1.upper())
if __name__ == "__main__":
print('{param1}'.format(param1=param1.decode("utf-8")))