从SOAPUI中的API响应中转移属性

时间:2016-01-06 23:52:04

标签: json soap soapui

首先,我在这里阅读官方文档并阅读其他主题,但我在解决这个问题时遇到了麻烦。所以请帮帮我:)

现在, 我有一个soapUI项目,我有两个不同的测试套件。 我使用一个测试套件创建一个帐户(生成帐户API),在JSON响应中,我得到一个访问令牌。

第二个测试套件中有许多API,所有这些API都使用第一个套件中的访问令牌。

所以我基本上想要做的是,从第一个套件中保存令牌,并在第二个套件中将其用作所有后续API调用的变量(或任何其他方式)。可能吗?

Transfer JSON properties

付费负载如下所示

{
   "accountName": "Ya-mmy",
   "userEmail": "yashxcgdtuyihxfaap7@gmail.com",
   "send_invitation_email": true,
}

响应如下所示

{
   "primary_user_email": "yashxcgdtuyihxfaap7@gmail.com",
   "access_token": "8cfe0670-897c-46d0-b0f6-c74519624ebf",
   "tenant_name": "Ya-mmy"
}

3 个答案:

答案 0 :(得分:1)

这可以通过多种方式实现

  1. 在您正在获取访问令牌的休息请求步骤之后添加 groovy脚本测试步骤。
  2. 不使用其他步骤,只需使用脚本断言进行 rest request 步骤,即获取访问令牌。这样,您甚至可以检查响应中是否收到了某些值。
  3. 它再次成为个人选择,我更喜欢并提供#2方式。

    脚本断言中添加以下脚本以用于您的休息请求步骤:

    import net.sf.json.groovy.JsonSlurper
    def jsonResponse = new JsonSlurper().parseText(messageExchange.responseContent)
    assert null != jsonResponse.access_token, "access_token of response either does not have value or null"
    context.testCase.testSuite.project.setPropertyValue('ACCESS_TOKEN', jsonResponse.access_token)
    

    现在,您可以在 testSuite 中需要访问令牌的地方使用${#Project#ACCESS_TOKEN}

答案 1 :(得分:1)

我刚刚使用内置属性转移功能解决了类似问题。

在源代码中,将“Response”作为属性并将“JSONPath”作为语言。 在空白字段中添加:$access_token

然后指向正确的目标。它可以是TestSuite或全局自定义属性。您必须先指定自定义属性的名称,例如“ACCESS_TOKEN”。它将被保存在那里。

现在,要在测试中的任何位置使用它,只需使用:${#TestSuite#access_token}或相应地将其保存为全局属性。

答案 2 :(得分:0)

如果没有groovy,我们也可以将它存储在属性中,并在测试步骤中使用该属性:

此步骤所需的步骤:

  1. 在休息请求后添加“属性转移”步骤

  2. 添加属性步骤和属性为“SecurityToken”且值为空值

  3. 在Property Transfer中添加新的Transfer“TransferSecurityToken”

    来源:选择REST(请求)和In 属性选择ResponseAsXml

    • 您的JSON Respose内部将转换为XML。

    在源代码中使用 // *:access_token 之类的xpath和

    目标中的

    选择属性 - > SecurityToken

    现在,属性SecurityToken的响应值为1 API响应“access_token”

    在您的请求中使用$ {Properties#SecurityToken}

    此外,您可以在其他测试请求中直接使用以下语句 $ {FirstTeststepName#ResponseAsXml#// *:acess_token}

    希望这两个解决方案能够帮助