jmeter groovy dynamic json request creation from csv



我需要从csv文件开始动态创建一个JSON请求。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* 组成,并且:

如果字段为空,则请求中的字段必须留空。如果字段等于"缺失",则不应将 FIELD 添加到请求中。

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

我尝试了一些东西,但我无法动态创建请求。

有什么建议吗?

提前谢谢你

像这样:

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))​

最新更新