JSR223预处理器在使用CSV在Jmeter中创建json时发出错误请求

时间:2018-09-17 14:16:09

标签: json groovy jmeter jsr223

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

下面是我创建的用于获取所需JSON的代码:

int res = func([](int a, int b) { return a + b; } );
int res2 = func([](int a) { return a * a; } ); 

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标签下,结果应为:

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)

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

1 个答案:

答案 0 :(得分:0)

  1. 我看不到为什么需要在Groovy中构建请求正文,它可以完全在HTTP Request“ Body Data”标签中完成,例如:

    JMeter HTTP Request Parameterize

    查看JMeter Parameterization - The Complete Guide,以获取有关使用外部数据源创建数据驱动的JMeter测试的示例

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