JMeter - Как я могу отправить случайное количество строк полезной нагрузки для полезной нагрузки службы REST? - PullRequest
0 голосов
/ 26 сентября 2019

На рисунке «Полезная нагрузка» ниже показаны 3 позиции для GROUND_SERVICE и все параметры, такие как SERVICE_TYPE_CODE, ORIG_ZIP, DEST_ZIP, UNITS_SHIPPED, START_DATE, должны быть параметризованы.Я не всегда могу отправить запрос на 3 позиции GROUND_SERVICE.Мне нужно отправить случайное количество строк GROUND_SERVICE, в данном случае от 1 до 3. В действительности у меня будет около 20 позиций.Как я могу сделать это при параметризации всех значений в элементе GROUND_SERVICE?

Полезная нагрузка

РЕДАКТИРОВАННЫЙ ВОПРОС НИЖЕ ПОСЛЕ ПОЛУЧЕНИЯ ПРЕДЛОЖЕНИЯ ДМИТРИИ:

Я думаю, что предлагаемый код позволяет мне посылать случайное количество блоков GROUND_SERVICE, и если это так, решает половину моей проблемы.Однако я не могу рандомизировать элементы данных, такие как ORIG_ZIP, UNITS_SHIPPED и т. Д. Они должны быть извлечены из файла CSV.Как я могу это сделать?Просто чтобы прояснить, я создал эти элементы данных для защиты конфиденциальных данных.На самом деле Запрос содержит различные типы элементов данных с тестовыми данными, которые проходят через механизм правил, и поэтому я должен извлечь фактические данные из файла CSV.

1 Ответ

0 голосов
/ 27 сентября 2019
  1. Добавить JSR223 PreProcessor как дочерний элемент сэмплера HTTP-запроса, который вы хотите параметризовать
  2. Поместите следующий код в область «Сценарий»:

    import groovy.xml.MarkupBuilder
    import org.apache.commons.lang3.RandomUtils
    import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy
    
    def writer = new StringWriter()
    def xml = new MarkupBuilder(writer)
    
    static def getRandomGroundServices(MarkupBuilder xml) {
        1.upto(RandomUtils.nextInt(1, 4), { number ->
            xml.GROUND_SERVICES() {
                GROUND_SERVICE() {
                    SERVICE_TYPE_CODE(number + "DAY")
                    ORIG_ZIP(RandomUtils.nextInt(11111, 99999))
                    UNITS_SHIPPED(RandomUtils.nextInt(1, 10))
                    START_DATE(new Date().plus(number).format('yyyy-MM-dd'))
    
                }
            }
        })
    };
    
    getRandomGroundServices(xml)
    
    vars.put('payload', writer.toString())
    

    enter image description here

  3. Вот и все, теперь вы можете ссылаться на случайную полезную нагрузку как ${payload}, где это необходимо:

    enter image description here

  4. Каждый раз, когда вы запускаете запрос, различное количество элементов GROUND_SERVICE будет отправлено на сервер с произвольными UNITS_SHIPPED и ORIG_ZIP

    enter image description here

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...