xpath和soapui,转移属性。从测试套件中的Get to a Post获取嵌套JSON

时间:2015-06-23 20:38:12

标签: json rest xpath soapui

我正在尝试学习SoapUI,但我没有找到任何关于如何从Rest GET请求到Rest POST请求执行传输属性的好指南。

我从REST GET请求返回了以下有效负载

{
 "a":"a",
 "b": { "b1":"b1", "b2":"b2" },
 "c":"c"
}

我想获取此JSON并删除c,然后将其余内容提交给POST请求。我想张贴

{
 "a":"a",
 "b": { "b1":"b1", "b2":"b2" },
}

我试图在SoapUI中做所有这些,但没有成功。我可以通过在source属性中说RseponseAsXML并且目标属性是Request来获取单个值。然后我使用命令//*:a。但它只会返回该值。

我不希望这是xml,我正在严格使用JSON。 谢谢。

1 个答案:

答案 0 :(得分:1)

如果您想操纵JSON响应以在其他TestStep中使用,则更容易使用groovy TestStep而不是Transfer testStep。因此,使用以下代码创建groovy TestStep并操纵响应:

import groovy.json.JsonSlurper
import groovy.json.JsonOutput

// get the response using the name of your test step
def response = context.expand('${REST Test Request#Response}')
// parse response
def jsonResp = new JsonSlurper().parseText(response)
// remove "c" element
jsonResp.remove("c")
// parse json to string in order to save it as a property
def jsonAsString = JsonOutput.toJson(jsonResp)
log.info jsonAsString // prints --> {"b":{"b1":"b1","b2":"b2"},"a":"a"}
// save the json response without "c" in a testCase property
testRunner.testCase.setPropertyValue('json_post',jsonAsString)

使用上面的代码解析响应,删除c元素并保存为testCase中的属性,然后在REST POST中,您可以使用以下代码获取新的JSON:< / p>

${#TestCase#json_post}

希望这有帮助,