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

StructType предоставляет методы json и jsonValue, которые могут быть использованы для получения json и dict представления соответственно и fromJson, которые могут быть использованы для преобразования словаря Python в StructType.

schema = StructType([
    StructField("domain", StringType(), True),
    StructField("timestamp", LongType(), True),                            
])

StructType.fromJson(schema.jsonValue())

Единственное, что вам нужно, это встроенный модуль json для синтаксического анализа ввода dict, который может быть использован StructType.

0
задан alqoush 30 March 2019 в 23:25
поделиться

1 ответ

Трудно ответить, почему ваш сценарий всегда извлекает значение 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);

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

import org.apache.jmeter.protocol.http.control.Header;
sampler.getHeaderManager().add(new Header("Cookie",vars.get("cookie")));
0
ответ дан Ameen Ali Shaikh 30 March 2019 в 23:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: