#jmeter
#jmeter
Вопрос:
Мне удалось настроить скрипт для извлечения значения из токена и использования его глобально для другого потока, но, к сожалению, мой скрипт извлекает значение как 1 по умолчанию.
Извлечение регулярных выражений распечатанные журналы
Я ожидаю напечатать значение, извлеченное из запроса токена.
Ответ №1:
Трудно ответить, почему ваш скрипт всегда извлекает значение 1, пока мы не узнаем, какой возвращается ответ и как ваш Regex Extractor
ведет себя в этом ответе. Также лучше использовать Groovy
в более новых версиях JMeter вместо BeanShell
.
В качестве примера, который поможет вам, я опубликовал ниже использование Regex Extractor
и Beanshell Preprocessor
для одного из моих старых проектов, который извлекает cookie amp; CSRF
значения из ответа на предыдущий запрос и передает следующему запросу.
HTTP-ответ:
{"responseMessage":{"messageObjects":[{"Authorization":"Bearer eyJhbGcxxxxxxxxxx.hsagdshvvdcwfdhwegdwdvbsqmshljkdhlqwkvnAJHFDBVGHWFHJDWBMNEHDJBSMNWBWJLHDKLJWHKJHDHWFVWDJGJKEWWBDNXVWGHDFWJHXKLBSNXVWFXWJEHXKWBXWDVXHGHWCDGXWDXCB0YXNrdcbwdgwegvcbwdvxbscxwfdvcwehgdwebwbvdcwdgckkhecdADGGHWFCVWBDVCGWCWVXNBSVXKWHCWVCBWCJWFGHECWECwgdhwvcwehhebdmnwwjhgnwvdcnbvwgvcwrehcwefnwecwghkevwe.abcdefghijklmnopqrst-poushfgabjwgjhwdvvttrudyqgd-CSGQGBkjgdjwhged","csrfToken":"adganm7ik39i6oclabce54154","ConnectedIP":"127.0.0.1","lastLoginIp":"null"}],"messageString":""},"responseStatus":200}
Средство извлечения регулярных выражений (имя используемой переменной — «authcsrfkey»)
{"responseMessage":{"messageObjects":[{"Authorization":(. ?),"csrfToken":"(. ?)"
Постпроцессор BeanShell (поскольку мне нужно объединить два извлеченных значения. Этот постпроцессор находится сразу после извлечения регулярных выражений)
String authkey=vars.get("authcsrfkey_g1");
String csrf=vars.get("authcsrfkey_g2");
String cookie="Authorization=" authkey "; csrfToken=" csrf;
vars.put("cookie",cookie);
Препроцессор BeanShell (будет добавлен в заголовок последующего запроса)
import org.apache.jmeter.protocol.http.control.Header;
sampler.getHeaderManager().add(new Header("Cookie",vars.get("cookie")));