在SoapUI中将属性作为JSON传递

时间:2014-08-25 17:42:23

标签: json rest soapui

我有一系列创建步骤作为我正在进行的程序的用例的示例。例如,用户必须首先创建CASE并发送响应_id(数据库密钥),作为创建IDENTITY时的case_id。

POST CASE请求:

{ "display_name" : "Sample Case"}

响应:

[{
   "synthetic": false,
   "last_updated": "2014-08-25 16:50:07.956611",
   "encrypted": false,
   "date_created": "2014-08-25 16:50:07.956602",
   "_id": "53fb693fc41be928380d5fe0",
   "display_name": "Sample Case"
}]

XML中的响应:

<Response>
   <e>
      <_id>53fb693fc41be928380d5fe0</_id>
      <date_created>2014-08-25 16:50:07.956602</date_created>
      <display_name>Sample Case</display_name>
      <encrypted>false</encrypted>
      <last_updated>2014-08-25 16:50:07.956611</last_updated>
      <synthetic>false</synthetic>
   </e>
</Response>

POST IDENTITY请求:

{
    "display_name" : "John Doe",
    "case_id" : "53fb693fc41be928380d5fe0",
    "type" : "person",
}

我遇到的问题是,虽然我可以从案例响应中捕获_id值,并将其填充到一组属性中,但我无法弄清楚如何将该属性对象转换为JSON请求(我正在使用的程序需要REST请求)。

有没有办法使用Test Suite动态创建REST请求的JSON数据?

2 个答案:

答案 0 :(得分:5)

如果您只想从之前的Response中插入内容,可以使用SoapUI属性扩展:

${previous_step_name#ResponseAsXml#//*:_id}

所以你的例子看起来像:

{
    "display_name" : "John Doe",
    "case_id" : "${previous_step_name#ResponseAsXml#//*:_id}",
    "type" : "person",
}

如果你需要更加花哨的东西来动态创建JSON数据&#34;,你需要解释你想要的东西。以下是可以帮助您入门的内容:http://siking.wordpress.com/2013/07/05/dynamically-create-elements-in-a-soapui-request-json-version/

答案 1 :(得分:0)

JSONBuilder就像@SiKing所说的那样。

一个非常简单的解决方案是使用每个请求的格式向项目添加不同的模板。

CaseTemplate.json - &gt;

{ "display_name" : "${display_name}"}

IdentityTemplate.json - &gt;

{
"display_name" : "Sample Case",
"case_id" : "${case_id}",
"type" : "${display_name}"
}

然后,在每个请求测试步骤之前,在属性转移中,您可以使用其中一个有效负载的内容设置请求测试步骤的请求属性

Source: Name_of_your_project -> Property:IdentityTemplate
Target: Request_test_step_name -> Property: Request

然后在另一个属性转移中设置新模板的所有属性。

确保您已在其余请求的界面中正确定义了此属性。