JMeter: Использование значения экстрактора регулярных выражений в постпроцессоре Beanshell для извлечения значения с использованием его в других потоках - PullRequest
0 голосов
/ 31 марта 2019

Мне удалось установить скрипт для извлечения значения из токена и использования его глобально для другого потока, но, к сожалению, мой скрипт извлекает значение как 1 по умолчанию.

BeanShell PreProcessor

Средство извлечения регулярных выражений + распечатаны журналы

Я ожидаю, что напечатаю значение, извлеченное из запроса токена.

1 Ответ

0 голосов
/ 01 апреля 2019

Сложно ответить, почему ваш сценарий всегда извлекает значение 1, пока мы не узнаем, какой ответ был возвращен и как ваш Regex Extractor ведет себя в этом ответе. Также лучше использовать Groovy в новых версиях JMeter вместо BeanShell.

В качестве примера, чтобы помочь вам, я разместил ниже использование Regex Extractor и Beanshell Preprocessor для одного из моих старых проектов, который извлекает значения cookie & 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 PostProcessor (так как мне нужно соединить два извлеченных значения. Этот постпроцессор находится сразу за экстрактором Regex)

String authkey=vars.get("authcsrfkey_g1");
String csrf=vars.get("authcsrfkey_g2");
String cookie="Authorization=" + authkey + "; csrfToken=" + csrf;
vars.put("cookie",cookie);

BeanShell PreProcessor (будет добавлено в заголовок последующего запроса)

import org.apache.jmeter.protocol.http.control.Header;
sampler.getHeaderManager().add(new Header("Cookie",vars.get("cookie")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...