在使用带有JSON数据的CSV配置时,键值对的引号读取不正确

时间:2018-03-28 05:32:51

标签: jmeter

我有来自Excel中使用的CSV的POST数据

{"Name":"","Token":-1,"TimeScheduleToken":"1","AccessRule":[{"ObjectToken":"528","ObjectName":"Common_ wash_Room_Exit","RuleToken":"528","RuleType":2,"StartDate":null,"EndDate":null,"ArmingRightsId":null,"ControlModeId":null}]}

执行后执行时,请求中的JSON数据与CSV中的JSON数据不同。在图像中找到请求

enter image description here

为键值对提供的报价加倍并在请求中显示。如何解决这个问题,请提出建议

2 个答案:

答案 0 :(得分:0)

Vittal,

我试图在JMeter 3.3中重现您的问题,并注意到它的工作正常。请在下面找到您需要在“CSV数据配置”元素中执行的设置。

enter image description here enter image description here

此外,我建议您在为数据创建任何csv文件时打开记事本并输入数据,然后将其另存为.csv文件,以避免数据中出现任何不必要的元素/字符。

您还可以参考博客文章,了解有关使用JMeter进行API负载测试的更多信息:JMeter Load Testing Against APIs

答案 1 :(得分:0)

我不知道你是如何得到这些双引号的,但是这里有你如何在运行时删除它们:

  1. 添加JSR223 PreProcessor作为HTTP请求采样器的子项
  2. 将以下代码放入“脚本”区域:

    def originalData = sampler.getArguments().getArgument(0).getValue()
    def normalizedData = originalData.replaceAll("\"\"","\"")
    sampler.getArguments().removeAllArguments()
    sampler.addNonEncodedArgument("",normalizedData,"")
    sampler.setPostBodyRaw(true)
    
  3. 就是这样,JSR223 PreProcessor将用单引号替换所有出现的双引号。
  4. sampler是父样本类实现的简写,如果HTTP Request采样器为HTTPSamplerProxy,请参阅所有可用函数和属性的类文档。

    请参阅Apache Groovy - Why and How You Should Use It文章,了解有关在JMeter测试中使用Groovy脚本的更多信息。