JMeter不会从CSV文件中读取带引号的CSV列表

JMeter won't read list of quoted, CSVs from a CSV file

使用JMeter支持功能性API测试,并且遇到了从CSV文件读取数据的问题。 来自文件的数据用于构建POST数据主体,其中包含以下内容:

1
"wibbles" : ${wibble-var},

从CSV文件读取${wibble-var},其格式为:

1
["wibble1","wibble2","wibble3"]

...列表中有超过1000个摆动值。

如果"wibbles" : ["wibble1","wibble2","wibble3"]...被硬编码到POST正文中,那么JMeter会很高兴,建立POST请求并进行业务,但是事实证明,即使上面的3值示例都无法创建CSV文件,JMeter会对其进行解析。 JMeter会跳过包含" CSV读取"的线程,而不会建立或发送POST请求,因此没有响应可供检查,并且类似地跳过了Debug Sampler。 我听说有传言说加倍引用可以奏效,但找不到正确的语法。 任何人都可以在这个问题上有所作为吗? 谢谢


如果可以得到"wibble1,wibble2,wibble3",并且在CSV data set config中将Allow quoted data设置为true,则双引号将起作用。

您可以获取此值,然后使用beanshell预处理程序将其转换为格式"wibble1","wibble2","wibble3"

如果要直接使用"wibble1","wibble2","wibble3"格式,可以使用\\t作为分隔符并相应地修改CSV文件中的数据。


反复试验导致以下解决方案。

我需要解析的单个数据变量的格式为[" value1"," value2"," value3"](即JSON数组。),这正是CSV文件所包含的内容(当然,标头名称位于第一行),包括[和]括号。

我将参数化的POST正文修改为:

"摆动":[$ {wibble-var}],
-也就是说,我将方括号移出了CSV文件,因此CSV文件现在仅包含数组中带引号的元素:

" value1"," value2"," value3"等

然后,在CSV数据集配置中将定界符设置为|。
并允许引用数据为FALSE。 <---这有点直观,但没有它,JMeter不会将逗号分隔的2000个带引号的字符串的完整列表作为单个变量读取。

完成这些更改后,脚本将正确执行。

再次感谢您的答复,我肯定会看看所提到的__String函数。


我会选择以下选项:

  • 如果您的"摆动"是一个字符串,您需要传递一个JSON数组,那么通过__StringFromFile()或__FileToString()函数访问它们可能会容易得多:

    1
    "wibbles" : ${_StringFromFile(/path/to/file/containing/wibbles,,,)},

  • 如果您需要访问单个"摆动",并且您的CSV文件基本上是JSON文件:

    • 将HTTP Request Sampler添加到您的测试计划中(在发送这些"摆动"的计划之前)并按以下方式进行配置:

      • 协议:file
      • 路径:c:/testdata/yourfile.csv
    • 添加JSON Path PostProcessor并使用JSON Path查询将"摆动"存储到JMeter变量中