jmeter Groovy динамический JSON запрос создания из CSV - PullRequest
1 голос
/ 11 июня 2019

Мне нужно создать JSON-запрос динамически, начиная с CSV-файла. CSV отформатирован так:

TEST_ID;TEST_DESC;RQ_FIELD1;RQ_FIELD2;RQ_FIELD3;RS_FIELD1;RS_FIELD2
TC1;TEST 1;input1;input2;input3;output1;output2
TC2;TEST 2;input1;;input3;output1;output2
TC3;TEST 3;input1;input2;missing;output1;output2

Запрос должен быть составлен только RQ_FIELDS * и:

Если поле пустое, поле в запросе должно быть пустым. Если поле равно «отсутствует», поле не должно быть добавлено к запросу.

т.е.

TC1
    { "FIELD1": "input1",
      "FIELD2": "input2",
      "FIELD3": "input3"
    }
TC2
    { "FIELD1": "input1",
      "FIELD2": "",
      "FIELD3": "input3"
    }
TC3
    { "FIELD1": "input1",
      "FIELD2": "input2"
    }

Я что-то пробовал, но не могу создать запрос динамически.

Есть предложения?

Заранее спасибо

1 Ответ

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

Что-то вроде:

def csv = '''TEST_ID;TEST_DESC;RQ_FIELD1;RQ_FIELD2;RQ_FIELD3;RS_FIELD1;RS_FIELD2 
TC1;TEST 1;input1;input2;input3;output1;output2 
TC2;TEST 2;input1;;input3;output1;output2 
TC3;TEST 3;input1;input2;missing;output1;output2​'''

def m = [:]
def rqIndexes = []
csv.eachLine{ aLine, cnt ->
    if ( cnt == 0 ) {
        rqIndexes = aLine.tokenize( ';' ).findIndexValues{ it.startsWith( 'RQ' ) }
    }
    else {
        def k
        aLine.split( ';' ).eachWithIndex{ token, idx ->
            if ( idx == 0 ) {
                k = token
                m.put( k, [:] )
            }
            else{
                if ( rqIndexes.contains( idx as Long ) && token != 'missing' ){
                    m.get( k ).put( "FIELD${idx-1}", token )
                }
            }
        }
    }
}
groovy.json.JsonOutput.prettyPrint(groovy.json.JsonOutput.toJson(m))​
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...