问题描述
我的场景:
- 我正在执行POSt请求,该请求生成一个rateID(UUID)
- 执行另一个使用此rateID的POST请求
- 我还在体内使用JSON Extractor提取的其他2个字段,但不知何故,这个rateID照原样通过了
第一个POST请求的示例响应正文
{
"source": "USD","target": "MXN","RateId": "0f4a78a2d2b34849882f0154b9249345","exchangeRate": 21.3909440000,"rateExpiry": "2020-09-14 20:30:20","providerId": 2,"providerNm": "ZIGA-STATIC","rawRate": 21.3376000000,"markupValue": 0.00250
}
来自第二个POST请求的示例请求正文
[{
"source":"${source}","target":"${target}","RateId":"${RateId}","buyAmount":100,"transactionSettlementDate":"2020-07-28","transactionId":"${GUID}","transactionTimestamp":"2020-07-28T17:35:17.866Z"
}]
遇到错误
{"errorMessages":["Transaction #0: [invalid RateId ${RateId}]"]}
不可能那样使用UUID吗??我什至尝试使用正则表达式提取UUID ([a-f0-9] {8}-[a-f0-9] {4} -4 [a-f0-9] {3}-[89aAbB] [a-f0-9] {3}-[ a-f0-9] {12}),但还是没有运气
向社区的Jmeter专家寻求帮助,请帮助
解决方法
根据您显示的内容,似乎无法提取4个字段。
您需要向第一个HTTP请求添加3个JSON提取器:
第一个带有用于json路径表达式的源变量:
第二个目标变量:
最后一个是RateId
对于Guid,尚不清楚它是否仅是RateId的值(为什么要创建变量Guid而不是仅使用$ {RateId}以及在这种情况下如何填充它?)。
如果只是随机的uuid,则可以使用函数UUID:
$ {__ UUID()}
否则,请弄清它的来源。
请参阅:
,您可以使用JSR223 PostProcessor和以下Groovy代码在一次拍摄中提取3个值:
def response = new groovy.json.JsonSlurper().parse(prev.getResponseData())
vars.put('source',response.source)
vars.put('target',response.target)
vars.put('RateId',response.RateId)
演示:
更多信息: