Невозможно установить инкрементную переменную в Jmeter - PullRequest
0 голосов
/ 12 июня 2018

Вот мой простой план тестирования Jmeter.

Jmeter Sample Test Plan

Параметры пользователя выглядят так:

Jmeter Sample Test Plan

Я просто вызываю одну конечную точку, читаю тело ответа и в соответствии с найденными идентификаторами с помощью Regex Extractor я вызываю другую конечную точку.Цикл ForEach помогает убедиться, что для всех найденных идентификаторов одна и та же конечная точка вызывается с ID в качестве параметра в пути.

Что я пытаюсь достичь с помощью Другой HTTP-запрос внутри цикла ForEach - этопрочитайте ответ, и если тело содержит понедельник , приращение пользовательский параметр понедельник на 1, то же самое для вторник и для всех остальных Пользовательский параметр .В идеале в конце набора тестов я должен получить что-то вроде этого:

  1. Понедельник - 5
  2. Вторник - 3
  3. Среда - ноль или ноль
  4. четверг - ноль или ноль
  5. пятница - 1
  6. суббота - 12
  7. воскресенье - 8

Согласно моему скрипту BeanShellЯ надеюсь, что я иду по всем правильным путям:

import org.apache.commons.lang.StringUtils;

    String response = new String(data);
    int Mondays = 0;
    int Tuesdays = 0;
    int Wednesdays = 0;
    int Thursdays = 0;
    int Fridays = 0;
    int Saturdays = 0;
    int Sundays = 0;

    if(response.contains("'DayOfWeek':'Monday'")){
        Mondays++;
        vars.put("Monday", Mondays.toString);
    };
    if(response.contains("'DayOfWeek':'Tuesday'")){
        Tuesdays++;
        vars.put("Tuesday", Tuesdays.toString);
    };
    if(response.contains("'DayOfWeek':'Wednesday'")){
        Wednesdays++;
        vars.put("Wednesday", Wednesdays.toString);
    };
    if(response.contains("'DayOfWeek':'Thursday'")){
        Thursdays++;
        vars.put("Thursday", Thursdays.toString);
    };
    if(response.contains("'DayOfWeek':'Friday'")){
        Fridays++;
        vars.put("Friday", Fridays.toString);
    };
    if(response.contains("'DayOfWeek':'Saturday'")){
        Saturdays++;
        vars.put("Saturday", Saturdays.toString);
    };
    if(response.contains("'DayOfWeek':'Sunday'")){
        Sundays++;
        vars.put("Sunday", Sundays.toString);
    };

Моя небольшая проблема заключается в том, что Пользовательские параметры переменные никогда не обновляются и всегда в конце выполнения равны 0.Что я делаю не так в этой ситуации?Кто-нибудь сталкивался с этой задачей раньше?

1 Ответ

0 голосов
/ 12 июня 2018
  1. Имейте в виду, что начиная с JMeter версии 3.1 рекомендуется использовать Groovy для любых сценариев , чтобы рассмотреть возможность перехода на JSR223 PostProcessor

  2. Глядя на повторяющийся шаблон 'DayOfWeek':'xxx', кажется, что вам не нужно создавать 7 веток для каждого дня недели, вы можете извлечь текущее значение, используя Регулярные выражения и установить или получить иувеличить соответствующую переменную JMeter

Пример кода будет выглядеть примерно так:

def day = (prev.getResponseDataAsString() =~ "'DayOfWeek':'(\\w+)'")[0].get(1)
def value = (vars.get(day) ?: '0') as int
value++
vars.put(day, value as String)

См. Apache Groovy - почему и как его следует использовать статья для получения дополнительной информации об использовании скриптов Groovy в тестах JMeter

...