如何将groovy脚本的输出传递给soap请求

时间:2019-04-17 11:39:29

标签: soapui groovyscriptengine

我是不熟悉SoapUI并编写常规脚本的人。在我的请求参数中,我有两个字段“ from and to”。从是当前日期,到是一年后的日期。所以我写了一个时髦的脚本,将当前日期添加一年。和我传递给请求的相同输出。请帮助我纠正错误。

我希望在请求的“至”参数中过一年。 请详细说明一下,因为我是groovy和soapUI的新手。我经历了几个答案。谢谢。

use(groovy.time.TimeCategory)
{
def addYear = new Date() + 367.days
log.info addYear.format("yyyy-MM-dd") 
}

And this is my request in SoapUI:     from : ${TestSuite#bt} (Its a senML request)     to : ${#TestCase#addYear}

1 个答案:

答案 0 :(得分:0)

如果您使用的是常规步骤脚本,则可以这样做:

import groovy.json.JsonSlurper

testStep = testRunner.testCase.testSteps["YourApiRequestStep"]

def Response = testStep.getProperty("response").value;

def someFieldYouWantToSave = ""


if (Response == null) {
    log.error('No Response found.');
}
else {
    def jSlurper = new JsonSlurper();
    def json = jSlurper.parseText(Response);
    if (json.get("theFieldFromTheResponse") == null){
        log.error "TheFieldFromTheResponse not found in response. Please execute the teststep and try again"
    } else {
        someFieldYouWantToSave = json.get("theFieldFromTheResponse").toString()

        // YOUR LOGIC HERE FOR MODIFYING THE "someFieldYouWantToSave" value

        //SAVE THE FIELD
        testRunner.testCase.setPropertyValue("someFieldYouWantToSave", someFieldYouWantToSave)
    }
}

请记住,您始终可以通过在脚本窗口的右上角位置查看可以使用哪些上下文变量。例如,如果使用的是Groovy脚本步骤,则变量为: log 上下文 testRunner 。如果您尝试在其他地方使用上述示例,例如在测试用例断言脚本中,则该示例将无效,因为使用 log context messageExchange 。您可以通过查看示例from the documentation

来了解如何从项目中各个位置获取值。

有了这3条信息,无论您在什么地方使用它,都应该能够实现自己的目标。