2015-03-09 2 views
0

Я использую бесплатную версию soapui. В моем нагрузочном тесте я хочу прочитать значение поля запроса из текстового файла. Файл выглядит следующим образом:SoapUI Load test groovy последовательное чтение txt-файла

0401108937 
0401109140 
0401109505 
0401110330 
0401111204 
0401111468 
0401111589 
0401111729 
0401111768 

В испытании на нагрузку для каждого запроса я хочу прочитать этот файл последовательно. Я использую код, упомянутый в Unique property per SoapUI request using groovy, чтобы прочитать файл. Как я могу последовательно использовать значения из файла?

У меня есть следующий сценарий установки тест, чтобы прочитать файл

def projectDir = context.expand('${projectDir}') + File.separator 
def dataFile = "usernames.txt" 

    try 
    { 
     File file = new File(projectDir + dataFile) 
     context.data = file.readLines() 
     context.dataCount = context.data.size 
     log.info "  data count" + context.dataCount 
     context.index = 0; //index to read data array in sequence 
    } 
    catch (Exception e) 
    { 
     testRunner.fail("Failed to load " + dataFile + " from project directory.") 
     return 
    } 

В моем тесте, я следующий сценарий в качестве этапа проверки. Я хочу, чтобы прочитать текущую запись индекса из массива, а затем увеличивает значение индекса

def randUserAccount = context.data.get(context.index); 
context.setProperty("randUserAccount", randUserAccount) 
context.index = ((int)context.index) + 1; 

Но с этим сценарием, я всегда получаю 2-ю запись массива. Значение индекса не увеличивается.

ответ

0

Вы определили переменную context.index на 0 и просто сделать +1

Вы, возможно, потребуется цикл для чтения всех значений.

что-то вроде этого:

for(int i=0; i <context.data.size; i++){ 
    context.setProperty("randUserAccount", i); 
    //your code 
} 
+0

Я хочу прочитать значения, затем выполняется тест один за другим. – amique

+0

О, я думаю, вы можете выбрать шаг источника данных, чтобы прочитать все значения и поместить затем в переменную и шаг цикла (для этих шагов вам нужен Soapui Pro) – Lerminou

0

Вы можете добавить настройки скрипта в разделе Настройка сценариев для тестирования нагрузки и получить доступ к значениям в заводной шаге тестового сценария с помощью:

context.LoadTestContext.index =((int)context.LoadTestContext.index)+1 
0

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

Первоначально индекс установлен как -1. Приведенный ниже код увеличит индекс на 1, задает значение incremented как глобальное свойство и затем отобразит контекстные данные для этого индекса.

<confirmationNumber>${=com.eviware.soapui.SoapUI.globalProperties.setPropertyValue("index", (com.eviware.soapui.SoapUI.globalProperties.getPropertyValue("index").toLong()+1).toString()); return (context.data.get((com.eviware.soapui.SoapUI.globalProperties.getPropertyValue("index")).toInteger())) }</confirmationNumber> 
Смежные вопросы