首页 > 解决方案 > 如何在 ReadyAPI 中的两个 REST 请求之间保持相同的会话?

问题描述

我在同一个 TestCase 中有两个 REST 请求。

我目前正在使用 ReadyAPI 2.6.0。

我需要登录第一个请求才能访问第二个请求。

否则它不起作用。

你知道如何在这两个请求之间保持相同的会话吗?

标签: restweb-servicessoapuiready-api

解决方案


我猜您需要使用的密钥是在 HTTP 标头中设置的。

鉴于这是真的,并且您还需要在以下请求的 HTTP 标头中设置此特定值,您可以这样解决它:

  • 在您的第一个 REST 请求中,您使用以下代码添加脚本断言:

    def value = messageExchange.responseHeaders["session-id"];
    assert value != null
    assert value.size() == 1
    context.setProperty("sessionID", value)
    

您需要将第一行中的“session-id”替换为正确的 HTTP 标头具有的任何名称。您不应该更改最后一行中的“sessionID”。这是我们自己使用的一个单独的变量名。这将断言已经设置了一个值,然后将其保存为上下文变量,我们可以在以后的步骤中重用它。

  • 在您的第一个 REST 请求测试步骤之后添加一个 Groovy 脚本测试步骤。将其重命名为“提取上下文变量”(该名称将在下一步中重复使用)然后在其中添加以下代码:

    def value = context.getProperty("request-id")
    return value
    

上下文值无法从任何地方获得。通过在此处提取并返回值,将更容易在其余的 REST 请求测试步骤中使用它。

  • 打开您的第二个 REST 请求测试步骤(以及第三个和第四个等,如果您有更多) 打开底部的标头窗格 创建一个与您在第一个 REST 请求中收到的标头名称相同的新键 在值中,您输入

    ${Extract Context Variable#result}
    

运行整个测试用例时,您现在应该自动检索第一个响应中返回的标头,然后在以下请求中传输和重用它。


推荐阅读