В jmeter я использую контроллеры вложенных циклов вместе с некоторыми постпроцессорами JSR223 внутри каждого цикла.
Вот порядок написания скрипта:
Loop Controller
Loop Controller
http request
Endloop
JSR223 postprocessor
Endloop
Я хочу, чтобы скрипт сначала запускал HTTP-запрос (несколько раз), затем, после завершения цикла, запускал постпроцессор JSR223, а затем повторял все это.
Вместо этого происходит то, что он входит в первый контроллер цикла, затем запускает постпроцессор JSR223, а затем запускает второй вложенный контроллер цикла.
Почему? Как мне заставить его запускать скрипт в том порядке, в котором он написан сверху вниз и вложен?
Переход от использования постпроцессора, который выполняется для каждого запроса в области видимости, к сэмплеру, который выполняется один раз
Некоторые элементы в тестовых деревьях строго иерархичны (слушатели, элементы конфигурации, постпроцессоры, препроцессоры, утверждения, таймеры), а некоторые в первую очередь упорядочены (контроллеры, сэмплеры).
Другой вариант - добавить его в Sampler, который будет выполнять его сразу после семплера.
Постпроцессор JSR223 выполняется после каждого Sampler в его Scope, в вашем случае после каждой итерации семплера HTTP-запроса.
Если вы хотите запустить его только один раз - либо поставьте сэмплер Flow Control Action на место постпроцессора JSR223 и сделайте постпроцессор JSR223 дочерним по отношению к сэмплеру Flow Control Action.
В противном случае вы можете использовать Сэмплер JSR223 вместо постпроцессора JSR223, если вы не хотите, чтобы сэмплер JSR223 отображался в результатах теста - поместите функцию SampleResult.setIgnore() где-нибудь в ваш скрипт.
Спасибо Дмитрий! Я переключил свои постпроцессоры JSR223 на сэмплеры JSR223, и это исправило мой скрипт!
Большое спасибо за ваш ответ! Это была моя проблема. Я использовал постпроцессор, думая, что я хотел, чтобы он запускался после (почтовой части) предыдущего запроса, когда я должен был использовать сэмплер. Как только я переключил его, он исправил мой поток скриптов!!!