SoapUI 测试:从会话 ID 中删除引号
SoapUI testing: remove quotation marks from session ID
所以,我是 SoapUI 的新手,并且通常使用 API,但我正在尝试在 SoapUI(免费软件版本)中为 REST API 设置自动化测试).
我的第一个调用 returns 是 JSON 中的一个会话 ID,它被放在引号之间,例如:"session ID goes here"。在下一个 API 调用中需要此键,不带引号。我使用 SOAPUI 的 "Property Transfer Teststep",这很好用,除了引号仍然围绕会话 ID,导致后续调用的错误响应。
知道如何删除引号吗?我一直在阅读 up/Googling on Xpath 和 JSONPath,这是我可以在屏幕上使用的一些编码语言,但我看不出如何使用它来删除所述引号。
非常感谢您的帮助!!
完整的 RAW 响应:
HTTP/1.1 200 OK Cache-Control: no-cache Pragma: no-cache Content-Type: application/json; charset=utf-8 Expires: -1 Server: Microsoft-IIS/8.5 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Tue, 02 May 2017 18:31:48 GMT Content-Length: 38 "48d45ba2-4549-41be-8b31-e85b3c738a03"
你说邮件返回为“48d45ba2-4549-41be-8b31-e85b3c738a03”。虽然消息说它是 json,但这并不意味着 SoapUI 会将其解释为有效 json。有效 JSON 就像另一个答案中提到的问题一样,以大括号开头和结尾。它还应该有一个键值对。像这样:
{
"sessionId":"48d45ba2-4549-41be-8b31-e85b3c738a03"
}
在这种情况下,转移 $.sessionId
将产生 48d45ba2-4549-41be-8b31-e85b3c738a03
(不带引号),而不是 "48d45ba2-4549-41be-8b31-e85b3c738a03"
(带引号)。
附件中有一个带有模拟的项目。它接到了一个电话。如果打开项目,则必须通过单击播放来启动模拟,然后才能执行测试用例。 - https://www.dropbox.com/s/rsgc9q1g45jze5z/Whosebug_43745255_QuestionQuotationMarks.xml?dl=0。您可以将其保存为XML,然后您可以使用SoapUI 打开它。
您将看到 属性 传输步骤。它有一个通过的步骤。然后是您在没有任何参数的情况下传输值的地方。它将完整地传输消息。包括引号。
第二次转账是'$'。对于有效的 json,这将呈现与不带任何参数的 属性 传输相同的结果,因为“$”代表根。至少我是这么理解的。
包括在内您还将找到一个脚本:
response = context.testCase.getTestStepAt(0).testRequest.response.getResponseContent()
assert response == '"48d45ba2-4549-41be-8b31-e85b3c738a03"'
stripResponse = response.replace("\"", "")
assert stripResponse == '48d45ba2-4549-41be-8b31-e85b3c738a03'
stripResponse 是去掉引号的响应。然后,您可以继续将此变量分配给选择的 属性,或直接将其注入下一步的 headers。
有时编写脚本是可行的方法。
所以,我是 SoapUI 的新手,并且通常使用 API,但我正在尝试在 SoapUI(免费软件版本)中为 REST API 设置自动化测试).
我的第一个调用 returns 是 JSON 中的一个会话 ID,它被放在引号之间,例如:"session ID goes here"。在下一个 API 调用中需要此键,不带引号。我使用 SOAPUI 的 "Property Transfer Teststep",这很好用,除了引号仍然围绕会话 ID,导致后续调用的错误响应。
知道如何删除引号吗?我一直在阅读 up/Googling on Xpath 和 JSONPath,这是我可以在屏幕上使用的一些编码语言,但我看不出如何使用它来删除所述引号。 非常感谢您的帮助!!
完整的 RAW 响应:
HTTP/1.1 200 OK Cache-Control: no-cache Pragma: no-cache Content-Type: application/json; charset=utf-8 Expires: -1 Server: Microsoft-IIS/8.5 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Tue, 02 May 2017 18:31:48 GMT Content-Length: 38 "48d45ba2-4549-41be-8b31-e85b3c738a03"
你说邮件返回为“48d45ba2-4549-41be-8b31-e85b3c738a03”。虽然消息说它是 json,但这并不意味着 SoapUI 会将其解释为有效 json。有效 JSON 就像另一个答案中提到的问题一样,以大括号开头和结尾。它还应该有一个键值对。像这样:
{
"sessionId":"48d45ba2-4549-41be-8b31-e85b3c738a03"
}
在这种情况下,转移 $.sessionId
将产生 48d45ba2-4549-41be-8b31-e85b3c738a03
(不带引号),而不是 "48d45ba2-4549-41be-8b31-e85b3c738a03"
(带引号)。
附件中有一个带有模拟的项目。它接到了一个电话。如果打开项目,则必须通过单击播放来启动模拟,然后才能执行测试用例。 - https://www.dropbox.com/s/rsgc9q1g45jze5z/Whosebug_43745255_QuestionQuotationMarks.xml?dl=0。您可以将其保存为XML,然后您可以使用SoapUI 打开它。
您将看到 属性 传输步骤。它有一个通过的步骤。然后是您在没有任何参数的情况下传输值的地方。它将完整地传输消息。包括引号。
第二次转账是'$'。对于有效的 json,这将呈现与不带任何参数的 属性 传输相同的结果,因为“$”代表根。至少我是这么理解的。
包括在内您还将找到一个脚本:
response = context.testCase.getTestStepAt(0).testRequest.response.getResponseContent()
assert response == '"48d45ba2-4549-41be-8b31-e85b3c738a03"'
stripResponse = response.replace("\"", "")
assert stripResponse == '48d45ba2-4549-41be-8b31-e85b3c738a03'
stripResponse 是去掉引号的响应。然后,您可以继续将此变量分配给选择的 属性,或直接将其注入下一步的 headers。
有时编写脚本是可行的方法。