如何通过从soapUI中的其他请求的响应中获取值来设置JSON post请求中的值Groovy

时间:2018-03-27 19:01:10

标签: groovy soapui

我是Groovy脚本的新手,已经在groovy脚本中获得了请求并获得了JSON响应:

{
    Id: 12,
    Cntid: 3,
    MrId: 1257
    Details: [{
            stid: 224
            trqty: 2,
            Soh: 22
        }, {
            stid: 224,
            trqty: 2,
            Soh: 27
        }, {
            stid: 2341,
            trqty: 21,
            Soh: 89
        }
    ]
}

我从中检索数据并创建一个后期操作请求:

{
    Id: 12,
    Cntid: 3
    Details: [{
            stid: 224
            trqty: 2
        }, {
            stid: 224,
            trqty: 2
        }, {
            stid: 2341,
            trqty: 21
        }
    ]
}

1 个答案:

答案 0 :(得分:1)

从有效的JSON开始是有帮助的:你的有效载荷中缺少一些逗号。

假设您只想从响应中删除一些属性,可以使用:

import groovy.json.JsonSlurper

// Get the existing response
def newRequest = new groovy.json.JsonSlurper().parseText( [your JSON string] )

// Remove the unwanted attributes
newRequest.remove('MrId')
newRequest.'Details'.each {
    it.remove('Soh')
}

// Add new attributes
newRequest.put('status' , 'oma');
newRequest.'Details'.each {
    it.put('active','y')
}

如果您想继续使用Groovy,可以使用https://github.com/jwagenleitner/groovy-wslite之类的库来构建和发送下一个REST请求。

但是,为什么不使用soapUI来做到这一点:

// Get the next test step in a test case and set the request
def secondREST = context.testCase.getTestStepByName("secondREST")
secondREST.httpRequest.requestContent = newRequest

// Run it
secondREST.run(testRunner, context)