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

时间:2016-02-19 07:31:28

标签: json rest testing automated-tests soapui

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

第一个测试用例中的JsonResponse如下:

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

响应中的id(只有一个)必须通过属性传输定向到第二个测试用例的Json请求

    {
         workItemsId: ["1234"],
        field: "ABCD"
    }

我尝试过使用item [0] .id,但只传输了值。 我需要它作为响应中的数组。任何帮助都将深表感谢。我是SOAP-UI的新手。

2 个答案:

答案 0 :(得分:5)

IMO这样做的简单方法是使用属性扩展。对于您的情况,您可以使用以下符号方法${Test step name#Response#JSONPath}

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

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

并且您希望在第二个testStep请求中使用id数组中的第一个items并在数组中设置它,您可以使用以下符号:

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

<强>更新

如果您在评论中想要在属性转移中使用JSONPath表达式,请添加Property transfer testStep,选择您的请求来源,作为属性response,作为路径语言{ {1}}然后放置表达式JSONPath,最后选择要放置结果的属性。最后,您的物业转移将如下所示:

enter image description here

希望它有所帮助,

答案 1 :(得分:1)

您是使用两个测试用例还是仅用两个测试步骤? 无论如何,您可以将其设置为测试用例的属性,然后在具有属性扩展的下一个请求中使用该属性,而不是将属性直接传递给下一个请求。 所以,

  1. 创建一个属性&#34; id&#34;关于测试用例。
  2. 在属性转移步骤中,使用项目[0] .id
  3. 设置此属性的值
  4. 在下一个请求中使用属性扩展来填充值,因此json将如下所示:

    {
      workItemsId:["${#TestCase#id}"],
      field: "ABCD"
    }
    
  5. 以下是有关广告扩展的详细信息:https://www.soapui.org/scripting---properties/property-expansion.html