Jmeter 从响应中提取值并发送到其他请求
Jmeter extracting values from response and sending to other requests
我有下面的 JSON 回复:
"books": [
{
"name" : "test1",
"id" : "T01"
},
{
"name" : "test2",
"id" : "T02"
},
{
"name" : "test3",
"id" : "T03"
},
]
我正在提取所有相应的 ID 并将其作为正文发送给另一个请求。
其他请求将它作为一个字符串数组,但是当我提取它时,它显示为整数:
Currently it shows: ids_ALL = [T01, T02, T03]
and I have to pass it like: ids_ALL = ["T01", "T02", "T03"]
Note: I am suffixing _ALL to get all ids.
因为它没有将数组作为字符串传递,所以出现错误。
是否可以提取它并将其放入字符串数组或使用post-处理器然后转换数组并发送到其他请求的方式。
您可以使用 JSON Extractor or JSON JMESPath Extractor 从响应中提取所有 ID。
将 JSR223 Post 处理器放在 JSON 路径提取器的正下方以创建字符串列表 (ids)
def idCount=vars.get("booksIds_matchNr").toInteger()
def lstIds=[]
for(i in 1..idCount){
String currentId=vars.get("booksIds_" + i)
lstIds.add("\""+ currentId + "\"" )
//lstIds.add("${currentId}" )
}
vars.putObject("lstIds",lstIds)
您可以通过 vars.getObject("lstIds")
访问列表
可以在视图结果树中看到字符串列表。
另一个快速解决方案
在 JSON 提取器下方添加一个 JSR223 Post 处理器以创建具有可用值的字符串。
String booksIds_ALL=vars.get("booksIds_ALL")
def lstIds = "\"" + booksIds_ALL.replace(",", "\",\"") + "\""
vars.putObject("lstIds",lstIds)
这一行将提取所有 ID 并生成您要查找的 JSON Array:
vars.put('payload', (new groovy.json.JsonBuilder(new groovy.json.JsonSlurper().parse(prev.getResponseData()).books.id.collect()).toPrettyString()))
不需要其他提取器,您可以稍后在需要的地方将生成的数组引用为 ${payload}
在金牛座可以放入JSR223 Block
更多信息:
我有下面的 JSON 回复:
"books": [
{
"name" : "test1",
"id" : "T01"
},
{
"name" : "test2",
"id" : "T02"
},
{
"name" : "test3",
"id" : "T03"
},
]
我正在提取所有相应的 ID 并将其作为正文发送给另一个请求。 其他请求将它作为一个字符串数组,但是当我提取它时,它显示为整数:
Currently it shows: ids_ALL = [T01, T02, T03]
and I have to pass it like: ids_ALL = ["T01", "T02", "T03"]
Note: I am suffixing _ALL to get all ids.
因为它没有将数组作为字符串传递,所以出现错误。
是否可以提取它并将其放入字符串数组或使用post-处理器然后转换数组并发送到其他请求的方式。
您可以使用 JSON Extractor or JSON JMESPath Extractor 从响应中提取所有 ID。
将 JSR223 Post 处理器放在 JSON 路径提取器的正下方以创建字符串列表 (ids)
def idCount=vars.get("booksIds_matchNr").toInteger()
def lstIds=[]
for(i in 1..idCount){
String currentId=vars.get("booksIds_" + i)
lstIds.add("\""+ currentId + "\"" )
//lstIds.add("${currentId}" )
}
vars.putObject("lstIds",lstIds)
您可以通过 vars.getObject("lstIds")
可以在视图结果树中看到字符串列表。
另一个快速解决方案
在 JSON 提取器下方添加一个 JSR223 Post 处理器以创建具有可用值的字符串。
String booksIds_ALL=vars.get("booksIds_ALL")
def lstIds = "\"" + booksIds_ALL.replace(",", "\",\"") + "\""
vars.putObject("lstIds",lstIds)
这一行将提取所有 ID 并生成您要查找的 JSON Array:
vars.put('payload', (new groovy.json.JsonBuilder(new groovy.json.JsonSlurper().parse(prev.getResponseData()).books.id.collect()).toPrettyString()))
不需要其他提取器,您可以稍后在需要的地方将生成的数组引用为 ${payload}
在金牛座可以放入JSR223 Block
更多信息: