#jmeter-5.0
#jmeter-5.0
Вопрос:
Мой тест получает json
в ответ следующее.
{"result":"success","additional-info":"{"q-list":[{"tag":"un2-new tag2-empty","description":"some description2","q-id":"5c86fb8a-d9ce-4978-be4c-2c4b547c7868","creation-year":2020,"creation-month":11,"creation-hour":8,"creation-minute":48}],"pagination-info":{"page-state":"004400100038000800000000000000080800000000000000302435633836666238612d643963652d343937382d626534632d326334623534376337383638f07ffffffef07ffffffe9fde9512dc65b09db4b903cca66a71aa0004","partition-info":{"year":2020,"month":11}}}"}
Я хочу извлечь q-id
из ответа и использовать его в следующем запросе. Я создал следующий экстрактор.
и я использую его следующим образом:
Но я вижу, что ценность не извлекается.
Что я делаю не так?
Ответ №1:
Рад принять другие ответы. Я смог решить эту проблему с помощью beanshell
скрипта. Однако я до сих пор не знаю, почему извлечение значения из Regular Expression Extractor
не сработало.
Сценарий Beanshell
import com.eclipsesource.json.*;
//prev.setSuccessful(false);
try {
String jsonString = prev.getResponseDataAsString(); //response as string
log.info("received json string: " jsonString);
JsonObject responseAsJsonObject = JsonObject.readFrom(jsonString); //convert response string as json
log.info("converted to object: " responseAsJsonObject);
String additionalInfoString = responseAsJsonObject.get("additional-info").asString(); //get additional info string from json object
log.info("additional info as string: " additionalInfoString);
JsonObject additionalInfoJsonObject = JsonObject.readFrom(additionalInfoString); //convert additional info string to json
log.info("additional info as object: " additionalInfoJsonObject);
JsonArray questionListObject = additionalInfoJsonObject.get("questions-list").asArray(); //get questions list array
log.info("questions list: " questionListObject );
JsonObject firstQuestionFromList = questionListObject.get(0).asObject(); //get 1st question
log.info("first question: " firstQuestionFromList);
String questionID = firstQuestionFromList.get("question-id").asString();
log.info("question id of 1st question " questionID);
vars.put("questionIDFromBeanShell",questionID); //use this in next request
// prev.setSuccessful(true);
} catch (Exception e){
log.info("error in processing beanshell script: ", e);
prev.setSuccessful(false);
}