如何使用beanshell post处理器在jmeter中存储变量,并在下一个请求中引用该变量。

时间:2015-12-28 10:17:11

标签: properties jmeter beanshell

我正在点击一个http网址,需要将网址内容输入jmeter中的属性。 我已经从url完成了提取部分,但无法使用jmeter将值存储在属性中。

例如 请求就像 http://url/user=admin,password=admin

我需要jmeter中的属性

property1(用户)=管理员 属性(密码)=管理员

1 个答案:

答案 0 :(得分:2)

鉴于您已经提取了所需内容,可能更容易使用__setProperty()函数,如:

${__setProperty(foo,bar,)}

创建“foo”属性,其值为“bar”

如果您仍想使用“Beanshell”方式,可以使用props速记,它提供对JMeter属性的读写访问权限(实际上是java.util.Properties的实例),用于属性操作。

Beanshell脚本:

props.put("foo", "bar");

将创建一个值为“bar”的属性“foo”。

回到您的用例,如果您的网址看起来像http://example.com/?user=admin&password=admin,请使用以下Beanshell代码:

Map parameters = ctx.getCurrentSampler().getArguments().getArgumentsAsMap();

String user = parameters.get("user");
String password = parameters.get("password");

props.put("user", user);
props.put("password", password);

应该做你需要的。有关JMeter中Beanshell脚本的更多信息,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component指南。