SOAP UI - 是否可以捕获json响应值并将其作为参数传递给另一个测试用例?

时间:2016-08-02 09:14:51

标签: json rest groovy soapui

我有来自REST API的json输出,我想捕获id(来自响应)并将其作为参数传递给另一个测试。有可能吗?

{
   "Documents": "1",
   "maxResults": "1000",
   "pageSize": "1",
   "startIndex": "0",
   "documents": [   {
      "id": "sdfg7234-shdjfh823-wjk283-sdjf29",
      "name": "nameofodc.doc",
   }]
}

1 个答案:

答案 0 :(得分:0)

这是一个groovy脚本,它可以从给定json响应的id中检索documents,然后将该值存储到名为ID的测试用例级自定义属性中。

此脚本正在使用static / fixed response进行演示。

import groovy.json.*
def response ='''{    "Documents": "1",    "maxResults": "1000",    "pageSize": "1",    "startIndex": "0",    "documents": [   {       "id": "sdfg7234-shdjfh823-wjk283-sdjf29",       "name": "nameofodc.doc",    }] }'''
//Parse the response string
def parsed = new JsonSlurper().parseText(response)
//Extract the value of id and store it at test case level property ID
context.testCase.setPropertyValue('ID', parsed.documents[0].id.toString())

如果您希望脚本使用动态响应,请将以上语句的第二个语句替换为以下语句。

//Replace LoginRequest with actual test step name
def response = context.expand( '${LoginRequest#Response}' )

如何在其他步骤中使用上述存储的ID

  • 如果下一步是Groovy Script
context.expand('{#TestCase#ID}')

def id = context.testCase.getPropertyValue('ID')
log.info "ID retrieved from test case property is ${id}"
  • 如果下一步是请求步骤,请使用this repository,说${#TestCase#ID}