#jmeter
#jmeter
Вопрос:
пожалуйста, посоветуйте, каким должен быть хороший дизайн и реализация следующего сценария, с которым я столкнулся.
Дизайн
Sampler 1 (prerequisite)
Sampler 2 (prerequisite)
Sampler 3 (actual test)
Выполнение
Sampler 1 failed with error
Sampler 2 not executed
Sampler 3 not executed but marked as failed with Sampler 1 error or executed but result data replaced with error from Sampler 1
Примечание: Обязательные образцы исключены из отчета о конечном результате (для этого уже найдено решение).
Ответ №1:
Вы можете разработать свой тест следующим образом:
-
Сэмплер 1
-
Постпроцессор JSR223 со следующим кодом:
if (!prev.isSuccessful()) { vars.putObject('sampler1Result', prev) }
-
- Если контроллер со следующим условием:
${JMeterThread.last_sample_ok}
- Сэмплер 2
-
Сэмплер 3
-
Постпроцессор JSR223 со следующим кодом:
if (vars.getObject('sampler1Result') != null) { def sampler1Result = vars.getObject('sampler1Result') prev.setSuccessful(sampler1Result.isSuccessful()) prev.setResponseCode(sampler1Result.getResponseCode()) prev.setResponseMessage(sampler1Result.getResponseMessage()) prev.setResponseData(sampler1Result.getResponseData()) }
-
Где:
vars
— является сокращением для экземпляра класса JMeterVariablesprev
— является сокращением для экземпляра класса HTTPSampleResult
Комментарии:
1. Спасибо, Дмитрий, кажется, это работает для меня. Можете ли вы, пожалуйста, посоветовать, как добавить также неудачное имя сэмплера с ошибкой, возвращаемой в ответе сэмплера 3
2.
sampler1Result.getSampleLabel()
должно возвращать имяSampler1
. Смотрите, в частности, SampleResult JavaDoc и 8 лучших классов JMeter Java, которые вы должны использовать с Groovy в целом для получения более подробной информации.3. Уже сделал, но не уверен, как объединить оба в prev.setResponseData. Я получаю это в prev.setResponseData (sampler1Result.getSampleLabel() sampler1Result.getResponseData()) — jp @ gc — Фиктивный сэмплер[83, 97, 109, 112, 108, 101, 114, 32, 49, 32, 114, 101, 115, 112, 111, 110, 115, 101]
4. Пришлось использовать getResponseDataAsString вместо getResponseData