【问题标题】:JSR223 Preprocessor give Bad request while creating json in Jmeter using CSVJSR223 预处理器在使用 CSV 在 Jmeter 中创建 json 时给出错误请求
【发布时间】:2018-09-18 00:47:45
【问题描述】:

我正在尝试使用 Jmeter 中的 Groovy Json Builder 创建 JSON。

以下是我为获取所需 JSON 而创建的代码:

import groovy.json.JsonBuilder

def json = new JsonBuilder()

json {
    "Rule":{  
      "__type":"AndroidSamsungDeviceRelocationRule",
      "RuleId":0,
      "Name":"Test",
      "DeviceFamily":6,
      "Targets":{  
         "Groups":[  
            {  
               "Id":"[{LogicalId="${logicalid1}"}]"
            }
         ],
         "Devices":[  

         ]
      },
      "Priority":0,
      "IsEnabled":true,
      "StartDate":"/Date(${__time(,)})/",
      "EndDate":null,
      "Mappings":[  
         {  
            "RelocationTarget":{  
               "Id":"${logicalid2}",
               "Name":"${__P(TargetGroups)}",
               "Path":"\\'${__P(TargetGroups)}'\\",
               "PathVisible":"\\'${__P(TargetGroups)}'\\"
               },
               "IPRange":[  
                 source Double.parseDouble(vars.get("source"))
                 destination Double.parseDouble(vars.get("destination"))
               ]
            }
         ],
         "EnrollmentCertificateId":null,
         "EnrollmentCertificateName":""
      }
   }


sampler.addNonEncodedArgument("",json.toPrettyString(),"")
sampler.setPostBodyRaw(true)

CSV数据如下:

0.0.0.0,255.255.255.255 10.0.0.1,255.0.0.0

上面的 CSV 可以有多个值,从 1 到 100 个 IP,由 ',' 分隔。 代码还需要根据 IP 行数进行修改。 ABove CSV 数据需要在 IPRange 标签下,结果应该是这样的:

"Rule":{  
      "__type":"AndroidSamsungDeviceRelocationRule",
      "RuleId":0,
      "Name":"Test",
      "DeviceFamily":6,
      "Targets":{  
         "Groups":[  
            {  
               "Id":"[{LogicalId="${logicalid1}"}]"
            }
         ],
         "Devices":[  

         ]
      },
      "Priority":0,
      "IsEnabled":true,
      "StartDate":"/Date(${__time(,)})/",
      "EndDate":null,
      "Mappings":[  
         {  
            "RelocationTarget":{  
               "Id":"${logicalid2}",
               "Name":"${__P(TargetGroups)}",
               "Path":"\\'${__P(TargetGroups)}'\\",
               "PathVisible":"\\'${__P(TargetGroups)}'\\"
               },
               "IPRange":[  
                 {"From":"0.0.0.0","To":"255.255.255.255"}, 
                 {"From":"10.0.0.1","To":"255.0.0.1"},
                  ......
                  .....
               ]
            }
         ],
         "EnrollmentCertificateId":null,
         "EnrollmentCertificateName":""
      }

但我遇到的问题是 jmeter 中的“错误请求”。

【问题讨论】:

    标签: json groovy jmeter jsr223


    【解决方案1】:
    1. 我不明白为什么你需要在 Groovy 中构建你的请求正文,它可以完全在 HTTP Request“正文数据”选项卡中完成,例如:

      查看JMeter Parameterization - The Complete Guide,了解使用外部数据源创建数据驱动的 JMeter 测试的示例

    2. 如果您希望我们帮助您进行设置,最好能看到所需的结果,即您想要生成的 JSON 有效负载,并且您在上面的示例中尝试过的代码没有任何意义。习惯于检查 jmeter.log 文件 - 通常它包含足够的信息来深入了解 JMeter 测试问题。另外我建议阅读Parsing and producing JSON 文章和JsonBuilder 类文档。

    【讨论】:

    • 我需要使用 groovy 来执行此操作,因为这是动态的,并且 csv 可以从一行数据扩展到 100 行数据,并且对于每个我需要将其作为 json 放入单个请求中
    猜你喜欢
    • 2022-07-15
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 2020-04-03
    相关资源
    最近更新 更多