JMeter Пока Контроллер - PullRequest
       12

JMeter Пока Контроллер

3 голосов
/ 25 октября 2011

Я искал как сумасшедшее решение моей проблемы в Интернете, но пока что не существует. Моя проблема в том, что я должен проверить, получаю ли я определенный текст в HTTP-запросе, который находится в цикле while, и если я это сделаю, то я должен выйти из цикла и продолжить работу с потоком или полностью остановить поток, если текст не существует , Я настроил это следующим образом:

Thread Group
.. While controller
   .. HTTP request
      .. Response Assertion
Listener

Я использовал LAST в контроллере while и установил HTTP-ответ на ложный текст, и он не работает.

Ответы [ 4 ]

4 голосов
/ 03 ноября 2011

Надеюсь, что следующий будет работать для вас:

<b>Thread Group</b>
    <b>HTTP Request</b>
    //set-found-condition
    ${__setProperty(txtFound,FALSE,)}
    <b>While Controller</b>
    // invert value in condition - will be executed while txtFound == FALSE
    Condition = ${__BeanShell(!props.get("txtFound")}
    . . .
    [execute your test logic here]
    . . .
    <b>YOUR HTTP Request</b>
        <b>Response Assertion</b>
        // set your text assertion here
        // this will results in ${JMeterThread.last_sample_ok} = TRUE if text found
    <b>IF Controller</b>    --FOUND
    // if text found set separate variable or property - e.g. ${txtFound} - into TRUE
    Condition = ${JMeterThread.last_sample_ok}
        <b>HTTP Request</b> 
        //set-found-condition
        ${__setProperty(txtFound,TRUE,)}  // this will be inverted to FALSE in the next WHILE cycle's condition, WHILE cycle will be exited
    . . .

Я думаю, вы также можете легко использовать JSR / BSF / BeanShell PostProcessor , прикрепленный к ВАШ HTTP-запрос установить txtFound свойство в TRUE вместо громоздкой конструкции с IF.

3 голосов
/ 24 июня 2013

Попробуйте это


Thread Group
xpath_Extractor or regex_extractor( variable = VAR_1 )
.. While controller( ${__javaScript("${VAR_1}" != "REQUIRED")} )
   .. HTTP request
Listener
2 голосов
/ 25 октября 2011

http://jmeter.apache.org/usermanual/component_reference.html#While_Controller

Контроллер WHILE будет работать, пока что-то не будет установлено на FALSE. Установив условие как LAST, вы не выйдете из контроллера до последнего образца FAILS . Используете ли вы утверждение для сбоя образца, если он содержит нужный текст?

Более чистым способом может быть использование утверждения в виде бобовой оболочки для установки значения в false.

1 голос
/ 01 ноября 2014

Чтобы обойти эту проблему, я создал экстрактор регулярных выражений и настроил его так, чтобы он неизбежно потерпел неудачу, и установил для моей переменной значение FAIL.Затем я установил свой цикл while на $ {__ javaScript ("$ {projLoad}"! = "УСПЕХ")}

В моих условиях я создал тот же самый экстрактор RegEx, чтобы он снова не работал, но изменилсязначение по умолчанию SUCCESS

Это, вероятно, не самый чистый, но работает как шарм

...