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。

有时编写脚本是可行的方法。