Jmeter 杰米。比恩希尔后处理器
我已经在jmeter中完成了BeanShell脚本编写,但没有找到 任何这样的例子,它在jmeter中是如何有用的,以及哪种方式表示读取 采样值等。 有人能用example.in解释Jmeter中的BeanShell脚本吗 我们编写脚本的beanshell后/预处理器脚本。 我正在努力解决这个问题。它的实际用途是什么。请解释一下 这对我或其他人的理解都会有很大的帮助Jmeter 杰米。比恩希尔后处理器,jmeter,beanshell,Jmeter,Beanshell,我已经在jmeter中完成了BeanShell脚本编写,但没有找到 任何这样的例子,它在jmeter中是如何有用的,以及哪种方式表示读取 采样值等。 有人能用example.in解释Jmeter中的BeanShell脚本吗 我们编写脚本的beanshell后/预处理器脚本。 我正在努力解决这个问题。它的实际用途是什么。请解释一下 这对我或其他人的理解都会有很大的帮助 它的用法。如果您想在请求之间执行计算,Beanshell将帮助您在jmeter中实现它。我们有,也有。例如,创建一个线程组并添加一
它的用法。如果您想在请求之间执行计算,Beanshell将帮助您在jmeter中实现它。我们有,也有。例如,创建一个线程组并添加一个beanshell采样器,如图所示。 在脚本下输入
var a=1;
var b=2;
var c=a+b;
log.info("sum="+c);
并在启用日志查看器的情况下运行(选项菜单>日志查看器)
您可以使用beanshell脚本调用jar的java方法(应该在jmeter_文件夹/lib/ext中)
Beashell预处理器用于执行计算并随请求发送值。假设您希望在发送之前加密用户名和密码。您可以提供凭据,使用beanshell/java方法对其进行加密,并将其设置为beanshell脚本中的变量(vars.put(“variablename”,variablevalue)
)。您可以将变量作为http://test.com?parameter=${variablename}
类似地,Beashell后处理器用于处理响应。假设您要从响应中解密一个值,提取该值(使用正则表达式提取器)并使用beanshell脚本进行解密。如果查看beanshell后处理器的“脚本”部分,您将看到以下内容:
Script(variables: ctx, vars, props, prev, data, log)
- ctx代表,提供对JMeter上下文API的访问(有关详细信息,请参阅JavaDoc)。用法示例:
int threadNum = ctx.getThreadNum(); // get current thread number
String code = prev.getResponseCode(); String message = prev.getResponseMessage();
- vars-代表。使用
可以获取/设置变量值vars
String myvar = vars.get("myvar"); // get ${myvar} variable value and store it to myvar string myvar = myvar + "something"; // append "something" to myvar vars.put("myvar", myvar); // put new value into ${myvar} variable
- 道具-代表JMeter属性。基本上与变量相同,但变量可见性仅限于当前线程组,属性为“全局”
- prev-上一个的简写。似乎正是你要找的。您可以获取/设置开始时间、结束时间、执行时间、延迟、URL、响应代码、响应消息等。有关详细信息,请参阅JavaDoc。用法示例:
int threadNum = ctx.getThreadNum(); // get current thread number
String code = prev.getResponseCode(); String message = prev.getResponseMessage();
- 数据-包含父采样器响应数据的字节数组
String samplerData = new String(data); System.out.println(samplerData);
- 日志-可用于将某些内容打印到jmeter.log文件
log.info("This line has been written by Beanshell Post Processor");
有关更多详细信息和实际示例,请参见指南 例如,我使用JMeter创建客户。如果响应消息已创建,则将结果设置为通过;否则,将结果设置为
失败
,将失败消息设置为注意:创建失败
。这些步骤是:
TTP请求采样器
组装http请求BSF断言采样器
Http请求采样器
,所以直接转到packageorg.apache.jmeter.protocol.Http.Sampler
。如果您熟悉这些方法,请跳过此步骤prev
代表先前的样本结果
- 从目录中选择要上载的随机文件
- 计算上传/下载授权的hmac密钥(Swift所需)
- 为特定环境设置变量(基于参数)
File folder = new File(vars.get("image_path"));
File[] imageFiles = folder.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return !pathname.isHidden();
}
});
Random rnd = new Random();
File selected = imageFiles[rnd.nextInt(imageFiles.length)];
String file = selected.getAbsolutePath();
String extension = file.substring(file.lastIndexOf('.')+1);
String mimetype = URLConnection.guessContentTypeFromName(file);
vars.put("CURRENT_FILE", file);
vars.put("FILE_EXT", extension.toUpperCase());
vars.put("MIME_TYPE", mimetype);
谢谢你回答得很详细,帮帮我!也许您知道:如何使用Beashell后处理器提取值?您可以使用正则表达式提取器从响应中提取值。或者顺便说一句,BSF代表“Beanshell脚本框架”,您不仅可以编写java代码,还可以编写Python Perl JavaScript等。我不擅长java,所以我更喜欢BSF。这可能是显而易见的,但对于Beanshell后处理器来说,prev.getResponseDataAsString()和新字符串(数据)似乎是相同的。