首先,我在这里阅读官方文档并阅读其他主题,但我在解决这个问题时遇到了麻烦。所以请帮帮我:)
现在, 我有一个soapUI项目,我有两个不同的测试套件。 我使用一个测试套件创建一个帐户(生成帐户API),在JSON响应中,我得到一个访问令牌。
第二个测试套件中有许多API,所有这些API都使用第一个套件中的访问令牌。
所以我基本上想要做的是,从第一个套件中保存令牌,并在第二个套件中将其用作所有后续API调用的变量(或任何其他方式)。可能吗?
付费负载如下所示
{
"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"
}
答案 0 :(得分:1)
这可以通过多种方式实现
它再次成为个人选择,我更喜欢并提供#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,我们也可以将它存储在属性中,并在测试步骤中使用该属性:
此步骤所需的步骤:
在休息请求后添加“属性转移”步骤
添加属性步骤和属性为“SecurityToken”且值为空值
在Property Transfer中添加新的Transfer“TransferSecurityToken”
来源:选择REST(请求)和In 属性选择ResponseAsXml
在源代码中使用 // *:access_token 之类的xpath和
目标中的选择属性 - > SecurityToken 强>
现在,属性SecurityToken的响应值为1 API响应“access_token”
在您的请求中使用$ {Properties#SecurityToken}
此外,您可以在其他测试请求中直接使用以下语句 $ {FirstTeststepName#ResponseAsXml#// *:acess_token}
希望这两个解决方案能够帮助