# jmeter里的beanshell使用python转换十六进制字符串方法
3 min read
Table of Contents
现在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 binasciiparser = 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 base64parser = 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")))