Beanshell代码调用API,解析JSON响应

时间:2016-03-28 15:51:35

标签: jmeter beanshell

我正在尝试实现一个逻辑,我不想发送HTTP请求,除非API为字段返回0。如果我在没有监控来自此API的响应的情况下发送请求,则我的测试无效。 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,并在字段值为0时继续发送HTTP请求。在发送第一个请求之前,我不想在每个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")

1 个答案:

答案 0 :(得分:0)

正如Jmeter开发人员所建议的那样“最好避免在Jmeter中使用脚本语言”。因此,在您的情况下使用“If Controller”来解决阻止程序。以下是详细信息

  1. 在变量“valueIs”中保存此值后,使用正则表达式提取“API返回字段”值。如belo image所示
  2. enter image description here

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