2014-12-05 3 views
3

У меня есть план тестирования Jmeter, где я хочу, чтобы мой HttpSampler отправил запрос на отправку.Jmeter генерирует полезную нагрузку json запроса динамически

Тело запроса должен содержать JSon следующим образом:

{ 
    "productIds" : [ 
    "p1", 
    "p2", 
    ... 
    ] 
} 

У меня установки случайной величины генератора, который возвращает хорошо сформированный PRODUCTID при каждом вызове. То, что я хотел бы сделать, это генерировать полезную нагрузку, заполняя productIds случайного pid, взятого из генератора, непосредственно в теле запроса. Что-то вроде (предположим, что *** - это сценарий):

{ 
    "productIds" : [ 
    *** 
     for i in (1, $productsCount) { 
     write("\"$randomPid\"\n") 
     } 
    *** 
    ] 
} 

Возможно ли это? Если да, то как? Если нет, как бы вы подходили к проблеме?

Спасибо!

ответ

8
  1. Добавить Beanshell PreProcessor как ребенок запроса вы хотите параметризуем
  2. Put следующий код в "Сценарий" площади препроцессора:

    StringBuilder result = new StringBuilder(); 
    String newline = System.getProperty("line.separator"); 
    int max = Integer.parseInt(Parameters); 
    Random random = new Random(); 
    
    result.append("{"); 
    result.append("\"productIds\" : ["); 
    result.append(newline); 
    for (int i = 1; i < max; i++) { 
        result.append("\"").append(random.nextInt()).append("\","); 
        result.append(newline); 
    } 
    result.append("]"); 
    result.append(newline); 
    result.append("}"); 
    
    vars.put("json", result.toString()); 
    
  3. Поместите значение {productsCount} $ в " Параметры»строфа
  4. Refer генерируется полезная нагрузка, как ${json}, где требуется

См. How to use BeanShell: JMeter's favorite built-in component guide для получения более подробной информации о скриптах Beanshell в Apache JMeter.

+0

Да, именно так я и делал это, прежде чем видеть ваш ответ, задавался вопросом, можно ли было сделать непосредственно в полезной нагрузке HTTP-запроса, но это тоже нормально. Благодаря! –

+0

Вы можете использовать функцию [__Beanshell] (https://jmeter.apache.org/usermanual/functions.html#__BeanShell) прямо в теле запроса, но весь подход с точки зрения кодирования будет таким же –

Смежные вопросы