Java JMeter在HTTP请求中使用beanshell变量

Java JMeter在HTTP请求中使用beanshell变量,java,jmeter,beanshell,Java,Jmeter,Beanshell,我是这里的新手(我是说JAVA),花了几个小时寻找解决方案,现在我只想自杀。 我想在beanshell断言中创建一个字符串,该断言位于HTTP请求的正上方 我在《beanshell》中写道: String docid="abcd"; (实际上,我希望用一些变量连接字符串) 在HTTP请求中,发送我添加的参数${docid} 在中,您可以找到以下内容: vars - JMeterVariables - e.g. vars.get("VAR1"); vars.put("VAR2","val

我是这里的新手(我是说JAVA),花了几个小时寻找解决方案,现在我只想自杀。
我想在beanshell断言中创建一个字符串,该断言位于HTTP请求的正上方

  • 我在《beanshell》中写道:

    String docid="abcd";
    
    (实际上,我希望用一些变量连接字符串)

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

在中,您可以找到以下内容:

 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");
String docid = "abcd";
vars.put("docid",docid);
因此,要在beanshell代码中设置jmeter变量(在您的案例中为beanshell断言采样器),请使用以下命令:

 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");
String docid = "abcd";
vars.put("docid",docid);
或者干脆

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

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

如果您对Java不太了解,可以使用任何BSF或JSR223测试元素,然后选择Javascript语言作为脚本语言


如果需要将值从一个bean shell采样器传递到另一个bean shell采样器,则应使用变量

vars.put("a", "something")
在“其他采样器”中,您应该具有以下内容:

String otherSampler = vars.get("a")

关于调试Shell采样器-这不是那么容易。我建议使用SampleResult对象。如何使用它,您可以在这里看到

非常感谢您的帮助!!如果我没有要求太多,那么我如何才能仅在beanshell断言中连接变量。我的目标实际上是运行一个循环并继续连接字符串。我计划在一个循环控制器中运行这个采样器,并在每个循环运行时对变量本身进行少量修改。忽略上面的注释,我成功地进行了连接和循环,但不知何故,我无法将值从一个beanshell采样器传递到另一个。我试过vars.get(“varname”),但它不起作用。它仅适用于http请求类型variables.Hm。尝试使用至少跟踪beanshell采样器之间的问题变量。同样,你也可以使用道具。get/。以同样的方式放置-也许这会更好。