2016-03-28 36 views
0

我想实现一个逻辑,我不想发送HTTP请求,除非API返回一个字段。如果我发送的请求没有监测这个API的响应,我的测试是无效的。 API在JSON中返回响应,我可以解析和提取我需要比较的数据。以下是我的测试结构。Beanshell代码调用一个API,解析JSON响应

Thread Group 
    * While Controller 
    * CSV Data Set Config 
    * HTTP Request 
    * JSON Path Extractor 
    * Constant Throughput Timer 
    * While Controller Condition: ${__BeanShell(source("function.bsh”))} != “0” 

我想打电话给每5分钟后,该API,并与发送HTTP请求时,字段的值是0。我不希望发送的第一个请求之前,每一个HTTP请求前检查只是一次进行。 有人可以帮我用beanshell代码(function.bsh)获取API响应并解析JSON响应吗?使用python实现如下

max_behind = 0 
    response = requests.get("https://api") 
    consumers = response.json().get("consumers") 

    for total_behind in consumers.iteritems(): 
     max_behind += total_behind[1].get("total_behind") 

回答

0

由于Jmeter开发人员建议“在Jmeter中最好避免使用脚本语言”。所以在你的情况下,使用“如果控制器”来解决你的拦截器。以下是详细信息

  1. 一旦您将该值保存在变量“valueIs”中,就可以使用正则表达式提取“API返回字段”值。如在Belo图像所示

enter image description here

  • 使用 “如果控制器”,并在条件输入以下值 “$ {valueIs} == 1”,然后添加子请求(下一个API调用/调用)到“If controller”。如下图所示图片
  • enter image description here