【问题标题】:how to apply conditions on JSON response in Jmeter?如何在 Jmeter 中对 JSON 响应应用条件?
【发布时间】:2015-04-16 15:49:09
【问题描述】:

回复如下,

我必须提取所有 'deviceResponseStatus.id' 其中 status="PENDING" 如何在 Jmeter 中使用 JSON Path 或 REGEX 来实现?

{
  "apiResponseStatus": "SUCCESS",
  "deviceResponseList": [
    {
      "apiResponseStatus": "SUCCESS",
      "id": 23,
      "ownership": "CORPORATE",
      "deviceName": "Demimbu",
      "deviceType": "MOBILE",
      "osType": "ANDROID",
      "inTotalStorage": 0,
      "inAvailableStorage": 0,
      "exTotalStorage": 0,
      "exAvailableStorage": 0,
      "osVersion": "4.2",
      "buildVersion": "1.01.08",
      "status": "PENDING",
      "isDeleted": false,
      "policyIdNames": {
        "id": 3,
        "name": "Test Policy 3"
      },
      "deviceGroupIdNames": {
        "id": 1,
        "name": "Default Group"
      },
      "userIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "lastConnected": 1423810405000,
      "createdByIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "locked": false,
      "traceOn": false,
      "userEmail": "mdm.user1@gmail.com",
      "enrollmentDate": 1423790255000,
      "simNumbers": [
        "1236547896"
      ],
      "imeiCodes": [],
      "mobileNumbers": [
        "4558585858858"
      ],
      "createDate": 1421927250000,
      "lastModified": 1423810406000,
      "rooted": false,
      "roaming": false,
      "compliant": false
    },
    {
      "apiResponseStatus": "SUCCESS",
      "id": 24,
      "ownership": "CORPORATE",
      "deviceName": "Photobean",
      "deviceType": "MOBILE",
      "osType": "ANDROID",
      "inTotalStorage": 20941258752,
      "inAvailableStorage": 8024924160,
      "exTotalStorage": 0,
      "exAvailableStorage": 0,
      "bluetoothMacAddress": "8C:3A:E3:BE:C2:04",
      "wirelessMacAddress": "8c:3a:e3:51:bb:e3",
      "model": "LG-D686",
      "osVersion": "4.4.2",
      "buildVersion": "1.01.09",
      "status": "PENDING",
      "isDeleted": false,
      "policyIdNames": {
        "id": 3,
        "name": "Test Policy 3"
      },
      "deviceGroupIdNames": {
        "id": 1,
        "name": "Default Group"
      },
      "userIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "make": "LGE",
      "lastConnected": 1423648831000,
      "createdByIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "locked": false,
      "traceOn": false,
      "userEmail": "mdm.user1@gmail.com",
      "enrollmentDate": 1423628675000,
      "simNumbers": [
        "404909008623970"
      ],
      "imeiCodes": [
        "359004053152889",
        "359004053152871"
      ],
      "mobileNumbers": [
        "638847339387"
      ],
      "createDate": 1422435029000,
      "lastModified": 1423648831000,
      "rooted": true,
      "roaming": false,
      "compliant": false
    },
    {
      "apiResponseStatus": "SUCCESS",
      "id": 25,
      "ownership": "CORPORATE",
      "deviceName": "Livetube",
      "deviceType": "MOBILE",
      "osType": "ANDROID",
      "inTotalStorage": 0,
      "inAvailableStorage": 0,
      "exTotalStorage": 0,
      "exAvailableStorage": 0,
      "osVersion": "4.2",
      "buildVersion": "1.01.08",
      "status": "APPROVAL_PENDING",
      "isDeleted": false,
      "policyIdNames": {
        "id": 3,
        "name": "Test Policy 3"
      },
      "deviceGroupIdNames": {
        "id": 1,
        "name": "Default Group"
      },
      "userIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "lastConnected": 1423810522000,
      "createdByIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "locked": false,
      "traceOn": false,
      "userEmail": "mdm.user1@gmail.com",
      "enrollmentDate": 1423790371000,
      "simNumbers": [
        "1236547896"
      ],
      "imeiCodes": [],
      "mobileNumbers": [
        "4558585858858"
      ],
      "createDate": 1422435030000,
      "lastModified": 1423810522000,
      "rooted": false,
      "roaming": false,
      "compliant": false
    },
    {
      "apiResponseStatus": "SUCCESS",
      "id": 26,
      "ownership": "CORPORATE",
      "deviceName": "Riffwire",
      "deviceType": "MOBILE",
      "osType": "IOS",
      "inTotalStorage": 0,
      "inAvailableStorage": 0,
      "exTotalStorage": 0,
      "exAvailableStorage": 0,
      "status": "PENDING",
      "isDeleted": false,
      "policyIdNames": {
        "id": 3,
        "name": "Test Policy 3"
      },
      "deviceGroupIdNames": {
        "id": 1,
        "name": "Default Group"
      },
      "userIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "createdByIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "locked": false,
      "traceOn": false,
      "userEmail": "mdm.user1@gmail.com",
      "simNumbers": [],
      "imeiCodes": [],
      "mobileNumbers": [],
      "createDate": 1422435030000,
      "lastModified": 1423216312000,
      "rooted": false,
      "roaming": false,
      "compliant": false
    },

另外,如果有的话,请提出任何好的选择。

【问题讨论】:

  • 有人已经编辑了这篇文章(等待最终批准),但将来,代码应该有一个制表符或四个空格(您可以按 { } in所见即所得的编辑器缩进代码块。
  • 是的。感谢帮助。仍然我不明白可以做些什么来实现目标

标签: regex json jmeter performance-testing jsonresponse


【解决方案1】:

JMeter 通过 JMeter 插件提供JSON Path Extractor Extras With Libs Set

我相信这是实现目标的最佳方式。

有关插件安装说明和一些示例 JSON 路径查询,请参阅 Using the XPath Extractor in JMeter 指南(向下滚动到“解析 JSON”一章)。

【讨论】:

    【解决方案2】:

    您的问题是 JMeter 特有的,但我相信它实际上是常规的 Json 路径表达式。例如,在 SoapUI 中可以使用

    $.deviceResponseList[?(@.status=='PENDING')].id
    

    这可能会有所帮助

    【讨论】:

      猜你喜欢
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      相关资源
      最近更新 更多