Я новичок в Jmeter, и я застрял в состоянии. Я запускаю пример jmeter http с использованием файла csv, где я использую скрипт препроцессора, в котором выполняю следующие действия:
- , настраивая http.method в соответствии с запросом, таким как POST, GET, PUT, PATCH
- установка http.path как "/ restpath"
- установка тела запроса. json
Для пути я использую "http.path" и передал то же самое в http-сэмплере, как $ {http.path}. Все вышеперечисленное работает нормально, пока у меня не будет зависимого HTTP-запроса, как показано в примере ниже -
Шаг 1 - Нажмите HTTP-запрос по пути "/ restpath ". После успешной отправки я получил serverId в ответ и сохранил то же самое в json Извлекающая переменная "serverID".
Шаг 2 - Теперь мне нужно нажать http запрос по пути " / rest / $ {serverID}". когда я пытаюсь передать то же самое из CSV-файла, то же самое не заменяется захваченной переменной на шаге 1. Все, что я передал в CSV-файле в http.path, было передано и отправлено.
Ожидание - В листе -> http.path == "/ restpath / $ {serverID}"При отправке HTTP-запроса ->" / restpath / 4894rh89r"
Actual - In Sheet -> http.path ==" / restpath / $ {serverID}"При отправке HTTP-запроса ->" / restpath / $ {serverID}"
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.protocol.http.util.HTTPArgument;
//test input parameters
def httpMethod = vars.get("http.method");
//change the http method as per the data sheet
sampler.setMethod(httpMethod);
//set the HTTP Path
//URL url = new URL(vars.get('http.path'));
//vars.put('http.path',url.getPath());
//set the HTTP request body
if(!vars.get("input.json").equals("")){
def dataToBePosted = new CompoundVariable(new File(vars.get("jmeter.test.home") + vars.get("input.json")).text).execute();
def arg= new HTTPArgument("", dataToBePosted, null, true);
arg.setAlwaysEncoded(false);
sampler.getArguments().addArgument(arg);
//HTTP Body is set to
log.info(dataToBePosted);
}
Попробовал несколько успешных испытаний с использованием __V () работает, но не повезло :(