Переберите конфигурацию набора данных CSV с изменяющимся начальным индексом в Apache JMeter - PullRequest
1 голос
/ 20 июня 2019

Мое требование - перебрать конфигурацию набора данных CSV в Apache JMeter с переменным начальным индексом.Предположим, я сегодня запустил план тестирования в JMeter, и мой CSV-файл содержит 8 переменных.Первый раз мой сэмплер будет работать с 1-го по 8-й ряд.В следующий раз, когда я начну выполнять свой план тестирования, я хочу, чтобы сэмплер выбирал значения от 2-го индекса до 8-го индекса.Таким образом, я хочу перебрать CSV-файл, используя конфигурацию набора данных CSV.

Я могу инициализировать счетчик для каждого запуска теста в Apache JMeter, используя setUp ThreadGroup и tearDown Thread group.Я могу извлечь то же самое с помощью _P (count) в JMeter.

В группу потоков setUp я включил JSR 223 Sampler и написал скрипт типа

def file = new File('number')
if (!file.exists() || !file.canRead()) {
    number = '1'
}
else {
    number = file.text
}
props.put('number', number as String)

В группе потоков tearDown theJSR223 Sampler имеет скрипт типа

def number = props.get('number') as int
number++
new File('number').text = number

Я хочу перебрать мой конфигурационный файл набора данных CSV с помощью файла свойств счетчика (который увеличивается на 1 при каждом запуске теста)

1 Ответ

0 голосов
/ 21 июня 2019

Пожалуйста, проверьте план ниже: -

enter image description here

Пример ввода CSV: -

enter image description here

Если контроллер имеет следующий код: -

${__groovy(vars.get('Used').take(1)!='Y')}

В постпроцессоре JSR223 у меня есть следующий код: -

def inputFile = new File("C:\\Path\\toFile\\Excel\\OutputCSV.csv")
def lines = inputFile.readLines()
boolean isWrite = false;

lines.each { String line ->
    if(line.contains('Used'))
    {
        inputFile.write(line + '\n')
    }
    else
    {
        if(line.startsWith('Y'))
        {
            inputFile.append(line + '\n')
        }
        else if (!isWrite)
        {
            inputFile.append('Y' + line + '\n')
            isWrite = true;
        }
        else
        {
            inputFile.append(line + '\n')
        }

    }
} 

Выход первого запуска: -enter image description here enter image description here

Выход второго прогона: - enter image description here enter image description here

Как видите, в первом прогоне образец 1 выполняется 4 раза, а во втором - 3 раза.Это не самый лучший или лучший код, просто попробуйте сначала.Пожалуйста, проверьте, если помогает.

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