Jmeter:如何提取&使用BeanShell预处理器将accountID存储在响应变量中?我们可以使用JSON或正则表达式。
我的回复看起来像是什么:
{
"address":{
"street1":"6550 Vallejo Street",
"street2":"",
"city":"Emeryville",
"state":"CA",
"zipcode":"98456",
"country":"Uk"
},
"timezone":"US/Pacific-New",
"reference":"fe_qa001",
"token":"ns7h4rqVZegSZG6yZls6",
"login":"fe_qa001@qa.com",
"accountId":-9223372036762408565,
"firstName":"qa029",
"lastName":"svcqa",
"email":"fe_qa001@qa.com",
"component":[
{
"type":1,
"reference":"12-1",
"version":"1",
"base":"Plastic",
"zipcode":"94556",
"bedsize":"high",
"bed":false,
"componentId":0,
"code":"P5",
"sku":"abcd",
"serial":"1234",
"purchaseDate":1372723200000,
"chamber":2
}
]
}
我是Jmeter的新手。所以任何人都可以帮助我。该要求就像从下面给出的响应中确定帐户ID,并使用BeanShell预处理器将其存储在变量中。
答案 0 :(得分:4)
我不知道你在哪里获得这段代码,但看起来它正在使用minimal-json库并以奇怪的方式使用它,所以
此外,您的代码似乎无法正常使用minimal-json-0.9.4.jar,您应该将其修改为:
import com.eclipsesource.json.JsonObject;
String jsonString = prev.getResponseDataAsString();
JsonObject accountId = JsonObject.readFrom(jsonString);
vars.put("accountId_BSH",String.valueOf(accountId.getLong("accountId",0L)));
您可以使用JSR223 PostProcessor and Groovy language轻松完成同样的工作。 Groovy内置了JSON支持,因此您不必添加任何.jars。参考Groovy代码:
import groovy.json.JsonSlurper
def jsonSlurper = new JsonSlurper();
def response = jsonSlurper.parseText(prev.getResponseDataAsString());
vars.put("accountId_BSH", response.accountId.toString());
最好的方法是使用自JSON Path PostProcessor以来可用的JMeter 3.0。相关配置将类似于:
accountId_BSH
$.accountId