Wednesday, December 14, 2011

Перебираем все строки в csv файле.

За помощь в неравной борьюе большое спасибо Илье Пономаренко и Дэну Аркуше.

Постановка задачи: необходимо, чтобы цикл выполнялся ровно столько раз, сколько есть строк в csv-файле. Для каждого треда отдельно.
Т.е., если у нас есть
Готового решения в инете я не нашла (может, искала плохо, конечно).

Раньше проблема решалась таким образом: я создавала Loop Counter, задавала число проходов равным числу строк в csv, которое мне надо было пройти, и тогда всё работало замечательно.

Но проблема заключалась в том, что файл мог меняться, сответственно, могло меняться и количество строк в этом файле. Да и интересно было заставить джиметр автоматом считать, сколько раз нужно бегать.

Мучилась я долго, но придумала, наконец, нижеследующее.

Допустим, у меня есть csv файл с такими полями: userName,Pwd,grName. Точнее, файл содержит столбцы, чьи столбцы парсятся в переменные JMeter c именами userName,Pwd,grName.
В этом файле Х строк.

1. Редактируем файл, ставим в Х+1 строке слово FALSE в первом столбце (отвечающем за переменную userName). Сохраняем изменения.

2. Создаем Add -> Logic Controller -> While Controller, которому ставим значение для Condition (function or variable) равное ${username}

3. Добавляем в этот контроллер CSV Data Set Config, в котором прописываем нужный нам csv файл и все необходимые имена переменных из него.

4. Добавляем в контролер все шаги, которые необходимо выполнить в цикле.

Профит! :)

Единственный минус - цикл выполняется не Х, а Х+1 раз, и последний раз вместо значения переменной userName передаётся FALSE.

Но, как по мне, это лучше, чем править ручками.

Если кто знает лучший способ - буду рада, если поделитесь.

No comments:

Post a Comment