jmeter csv数据后期json收集
HTTP请求的JSON正文需要如下所示:jmeter csv数据后期json收集,json,csv,collections,jmeter,Json,Csv,Collections,Jmeter,HTTP请求的JSON正文需要如下所示: { "OrderId":"234", "SupplierId":"JJ889", "OrderedProducts": [ { "ProductId":"123", "Sku":"ABC123", "Description":"Thing 1" }, { "ProductId":"435", "Sku":"XYZ987", "Description
{
"OrderId":"234",
"SupplierId":"JJ889",
"OrderedProducts": [
{
"ProductId":"123",
"Sku":"ABC123",
"Description":"Thing 1"
},
{
"ProductId":"435",
"Sku":"XYZ987",
"Description":"Thing 2"
}
]
}
我有一个CSV文件,看起来像:
ProductId,Sku,Description
123,ABC123,Thing 1
435,XYZ987,Thing 2
....
但是,当我在HTTP请求正文数据中替换“ProductId”:“${ProductId}”
(以及sku和description的其他变量)时,我最终得到:
{
"OrderId":"234",
"SupplierId":"JJ889",
"OrderedProducts": [
{
"ProductId":"123",
"Sku":"ABC123",
"Description":"Thing 1"
},
{
"ProductId":"123",
"Sku":"ABC123",
"Description":"Thing 1"
}
]
}
如何确保我收集的产品在每个请求中都是唯一的(即不同的CSV行)?如果您总是在每个请求中有两个产品,只需按以下方式组织您的CSV: ProductId1,Sku1,描述1,ProductId2,Sku2,描述2 并使用新的变量名。使用和函数的组合,如:
{
"OrderId":"234",
"SupplierId":"JJ889",
"OrderedProducts": [
{
"ProductId":"${__javaScript("${__StringFromFile(file.csv,,,)}".split("\,")[0],)}",
"Sku":"${__javaScript("${__StringFromFile(file.csv,,,)}".split("\,")[1],)}",
"Description":"${__javaScript("${__StringFromFile(file.csv,,,)}".split("\,")[2],)}"
},
{
"ProductId":"${__javaScript("${__StringFromFile(file.csv,,,)}".split("\,")[0],)}",
"Sku":"${__javaScript("${__StringFromFile(file.csv,,,)}".split("\,")[1],)}",
"Description":"${__javaScript("${__StringFromFile(file.csv,,,)}".split("\,")[2],)}"
}
]
}
函数每次调用时都从\uu StringFromFile()
读取下一行文件.csv
函数允许执行任意javaScript代码,在上述情况下,函数将行拆分为ProductId、Sku和Description\uuujavascript()
有关JMeter函数的更多信息,请参阅用户手册章节和posts系列 每个请求总是有2种产品吗?不,不总是2种产品。我希望能够有一个每个请求的产品数量可变。我想我可以将CSV结构为每行有4或5个产品,并且有多个请求,每个请求最多有5个产品,这样就有点捏造了。我仍然想要一个更优雅的解决方案。在这种情况下,据我所知,在HTTP请求中使用JSON之前,您必须使用beanshell预处理器来定制JSON。