Как получить случайную строку из файла в JMeter

Я ищу способ, как получить случайную строку из файла в JMeter. Буду признателен за любые предложения.

4 ответа

Решение

Не уверен насчет groovy, возможно, есть более простой способ, но, например, вы можете сделать это с помощью Beanshell Sampler, используя следующий код:

import org.apache.commons.io.FileUtils; //necessary import

List lines = FileUtils.readLines(new File("/path/to/your/file"));  // read file into lines array   
int random = new Random().nextInt(lines.size()); // get random line number
String randomLine = lines.get(random); // get random line

vars.put("randomLine", randomLine); // store the random line into ${randomLine} variable
  • замена /path/to/your/file с относительным или абсолютным путем к файлу, из которого вы хотите получить случайную строку
  • вы сможете получить доступ к случайной строке как ${randomLine} где требуется

См. Как использовать BeanShell: руководство по использованию любимых встроенных компонентов JMeter для получения дополнительной информации об использовании API-интерфейсов JMeter и Java из тестовых элементов Beanshell в тесте JMeter.

NB. Приведенный выше код также является допустимым

Вы также можете использовать плагин Jmeter для конфигурации случайного набора данных CSV от Blazemeter. Он имеет все рандомизацию, которую обычный пользователь захочет получить поверх обычной конфигурации набора данных JMeters CSV.

Вы можете получить случайную переменную

random__Random(1,9)
//syntax: __Random(start,end)

Тогда вы можете вытащить

File fileInstance = new File("path/yourfile.txt");
readerInstance = new IndexedFileReader(fileInstance);
lines = readerInstance.readLines(randomIdx, randomIdx+1);

readLines принимает начальный и конечный номер строки..

Однако, если вы используете что-то другое, а не очень маленькие файлы, с небольшими итерациями, я действительно предлагаю вам прочитать весь файл в буфер и использовать случайную переменную, чтобы извлечь строки из этого

Это должно быть возможно при использовании контроллера оболочки компонента. Здесь вам нужно будет немного программировать, чтобы добиться желаемого поведения.

Существует простой способ достичь желаемого результата. Введите таймер выкупа в вашу группу потоков. Таймер обеспечит случайность потоков. Настройте элемент confit CSV для чтения данных из файла. Убедитесь, что файл является общим для всех потоков.

Другие вопросы по тегам