在if控制器中使用jmeter变量

时间:2014-10-29 03:56:48

标签: json groovy jmeter

我想使用jmeter if controller并使用我在处理前一个响应时获得的jmeter变量。 我有两个服务搜索和注册。我想要使​​用的逻辑是搜索服务,如果我得到一个好的响应(即搜索存在),则无需注册。如果搜索为空,则点击注册服务并再次检查搜索服务。 所以我有一个简单的控制器。在简单的控制器下,我有BSF断言的搜索服务。简单控制器下的下一件事是if控制器(带寄存器服务),我需要一个变量(比如$ {found}) 我将在bsf断言中创建变量

import groovy.json.*
def slurper = new JsonSlurper()
def result = slurper.parseText(prev.getResponseDataAsString())

if (result.id != null ) {
   def found = 0 // can be text logical or any other type ..
}

问题:我可以使用bsf断言搜索服务中创建的变量$ {found}作为If控制器的条件吗?是否可以在服务之外使用。将它作为用户定义变量更好吗?

2 个答案:

答案 0 :(得分:1)

取决于found变量类型,它可以是:

  • vars.put("found", found); - for String
  • vars.put("found", String.valueOf(found)); - 用于字符,整数,浮点数,双打,布尔值等。
  • vars.putObject("found", found) - 对于任何无法转换为字符串
  • 的内容
  • props.put(found, found); - 适用于任何对象类型。与JMeter变量相反JMeter属性具有“全局”范围,变量可见性仅限于当前线程组,因此如果需要将此值传递给另一个线程组,则需要使用属性。

在If控制器中设置条件时要小心,就像字符串文字一样,你需要将变量和值都放在引号中,如:

"${found}"=="someid"

有关详细信息,请参阅How to use JMeter's 'IF' Controller and get Pie.指南。

顺便说一句,有一些测试元素可以通过JMeter Plugins使用,这些元素用于处理JSON数据,因此您不必使用BSF脚本:

答案 1 :(得分:0)

是的,可以使用变量“找到”。但是您需要在代码末尾添加以下内容

vars.put("found",found);

希望这会有所帮助。