属性 从测试用例响应转移到不同测试用例中的请求

Property Transfer from a testcase response to a request in different testcase

SoapUI 中测试 rest 服务,我需要 属性 从测试用例响应转移到不同测试用例中的请求。

Json第一个测试用例的响应如下:

     {[{
         "items":[{
         "id": "1234",
         "state": "XYZ",
         "type" : "ABCD"
     },
     {
         "id": "12345",
         "state": "XYZV",
         "type" : "ABCDF"
     }
  ]}

响应中的 id(只有一个)必须通过 属性 transfer

定向到第二个测试用例的 Json 请求
    {
         workItemsId: ["1234"],
        field: "ABCD"
    }

我试过使用 items[0].id,但它只传输值。 我需要它作为响应中的一个数组。任何帮助将不胜感激。我对 SOAP 很陌生-UI.

您是为此使用两个测试用例还是仅使用两个测试步骤? 无论如何,不​​是将 属性 直接转移到下一个请求,而是可以在测试用例上将其设置为 属性,然后在下一个请求中使用 属性 扩展 属性。 所以,

  1. 在测试用例上创建 属性 "id"。
  2. 在 属性 传输步骤中使用 items[0].id
  3. 设置此 属性 的值
  4. 在下一个请求中使用 属性 扩展来填充值,所以 json 看起来像:

    {
      workItemsId:["${#TestCase#id}"],
      field: "ABCD"
    }
    

以下是有关 属性 扩展的更多详细信息:https://www.soapui.org/scripting---properties/property-expansion.html

IMO 最简单的方法是使用 属性 扩展。对于您的情况,您可以使用以下表示法 ${Test step name#Response#JSONPath}.

假设您有一个名为 REST Test Request 的第一个 testStep,响应如下:

{
    "items":[
        {"id": "1234","state": "XYZ","type" : "ABCD"},
        {"id": "12345","state": "XYZV","type" : "ABCDF"}
    ]
}

并且您想在第二个 testStep 请求中使用 items 数组中的第一个 id 并将其设置在数组中,您可以使用以下表示法:

{
    workItemsId: [${REST Test Request#Response#$items[0].id}],
    field: "ABCD"
}

更新

如果您在评论时希望在 属性 传输中使用 JSONPath 表达式,请添加 Property transfer testStep,select 作为您请求的来源,因为 属性 response,作为路径语言 JSONPath 然后放置表达式 $items[0].id 最后 select 您想要放置结果的 属性 。最后,您的 属性 转账将如下所示:

希望对您有所帮助,