2012-07-26 364 views
8

我是一个绝对的新手(JAVA我的意思),花了几个小时寻找解决方案,现在我只想拍摄自己。
我想在正好放在HTTP请求之上的beanshell断言中创建一个字符串。JMeter在HTTP请求中使用beanshell变量

  • 在BeanShell中我写道:

    String docid="abcd"; 
    

    (实际上我想连接具有一些变量的字符串)

  • 在HTTP请求,发送参数我添加${docid}

回答

14

BeanShell Assertion description section,你可以找到以下内容:

vars - JMeterVariables - e.g. vars.get("VAR1"); vars.put("VAR2","value"); vars.putObject("OBJ1",new Object()); 
props - JMeterProperties (class java.util.Properties) - e.g. props.get("START.HMS"); props.put("PROP1","1234"); 

所以设置JMeter的变量的BeanShell代码(在你的情况的BeanShell断言采样器)使用以下命令:

String docid = "abcd"; 
vars.put("docid",docid); 

或只需

vars.put("docid","abcd"); 

,然后您可以将其转换为$ {docid},就像您在HTTP请求中所做的那样。

+0

非常感谢你的帮助!如果我没有问太多,我将如何才能在beanshell断言中连接一个变量。我的目标实际上是运行一个循环并保持连接字符串。我打算在一个循环控制器中运行这个采样器,并将这个变量连接起来,每次循环运行时只需稍作修改。 – Suyash 2012-07-27 07:32:22

+0

忽略上述注释,我设法进行串接和循环,但不知何故,我无法将值从一个豆壳采样器到另一个。我尝试了vars.get(“varname”),但它不工作。它只适用于http请求类型变量。 – Suyash 2012-07-27 08:34:58

+0

嗯。尝试使用[Debug Sampler](http://jmeter.apache.org/usermanual/component_reference.html#Debug_Sampler)至少跟踪beanshell采样器之间的问题变量。你也可以用同样的方式使用props.get/.put,也许这样会更好。 – 2012-07-27 14:07:11

0

如果你需要从一个豆壳价值传递采样器到另一个,你应该使用变量。

vars.put("a", "something") 

在其他采样器,你应该是这样的:

String otherSampler = vars.get("a") 

关于调试壳牌取样器 - 它也不是那么容易。我建议使用SampleResult对象。如何使用它,你可以在这里看到Debugging Bean Shell Sampler