В Jmeter, как мы можем использовать препроцессор JSR223 для анализа CSV и фильтрации по определенному значению столбца, чтобы передать его как переменную в сэмплер - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в JMeter и стараюсь изо всех сил изучать различные вещи в JMeter, особенно в отношении обработки данных CSV, поскольку приложению, с которым я работаю, требуется множество параметризованных данных, и я просто не могу создать 100 файлов CSV, поданных в соответствии с требование и вместо этого используйте один CSV и отфильтруйте значения на основе определенных c условий.

Однако мне очень сложно написать код для этой конкретной операции.

Имя | Идентификация | Дата
"001, A" | "3409ADD9" | 05- 01-2020
«002, B» | «BA47D76A» | 05-01-2020
«003, C» | «2BC92A2D» | 05-02-2020
«004, D» | "AB9AEEBE" | 23.05.2020
"005, E" | "09FF417D" | 29.05.2020

Примечание: здесь я использую | для синтаксического анализа, поскольку мои данные будут содержаться как часть имени, как показано.

Как видите, данные сгруппированы по значению даты. Я хочу использовать этот CSV-файл для передачи значения Identity и Name на основе currentDate.

Например, текущая дата - май-01-2020, я хочу передать только те записи, чья дата - май-01-2020, и передать ее как переменную моим семплерам в al oop. Как только мы дойдем до конца файла (я имею в виду значения, с которыми не связана дата May-01-2020, я хочу снова запустить l oop) и повторять с первого до того момента, как я упоминаю в RunTime Controller .

Я задавал разные вопросы и пытался найти решение, так как не мог написать его для себя в Groovy, поэтому попросил помощи.

В соответствии со многими предложениями в различных вопросах относительно использования препроцессора JSR223 с Groovy вместо оболочки bean-компонента, я хотел бы получить некоторые рекомендации по решению этой проблемы, чтобы двигаться дальше.

1 Ответ

0 голосов
/ 14 мая 2020
  1. Добавьте setUp Thread Group к вашему плану тестирования
  2. Добавьте JSR223 Sampler к setUp Thread Group
  3. Put следующий код в область «Сценарий»:

    SampleResult.setIgnore()
    
    def original = new File('/path/to/original.csv').readLines()
    
    def current = original.findAll() { line -> line.contains(new Date().format('MM-dd-yyyy')) }
    
    def newFile = new File('/path/to/new.csv')
    
    newFile.withWriter { out ->
        out.println(original.get(0))
        current.each { line ->
            out.println(line)
        }
    }
    

    приведенный выше код отфильтрует исходный файл CSV и запишет только те строки, которые содержат текущую дату, в новый файл CSV

  4. Настройте Конфигурация набора данных CSV в основной группе потоков для использования файла «new.csv» из шага 3

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