rest - 如何在 ReadyAPI 中的两个 REST 请求之间保持相同的会话?
问题描述
我在同一个 TestCase 中有两个 REST 请求。
- 登录请求
- getAllParameters 请求
我目前正在使用 ReadyAPI 2.6.0。
我需要登录第一个请求才能访问第二个请求。
否则它不起作用。
你知道如何在这两个请求之间保持相同的会话吗?
解决方案
我猜您需要使用的密钥是在 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}
运行整个测试用例时,您现在应该自动检索第一个响应中返回的标头,然后在以下请求中传输和重用它。
推荐阅读
- node.js - 使用需要几秒钟才能完成的自动完成脚本时,Bash 中的 Spinner 功能
- regex - Nginx 位置块和代理通行证的正则表达式
- react-native - 在 tabnavigator 中访问 redux 状态(react-navigation)
- jupyter-notebook - 如何通过命令行重新启动 jupyter hub 中的服务器?
- rest - Acumatica Web 服务 - 将交叉引用备用 ID 添加到库存项目
- javascript - 单击按钮时删除的值
- java - 如何在 Java 中调用 WCF 服务
- regex - 为什么在正则表达式中使用否定的空集而不是.?
- react-native - 如果在本机反应中断开互联网连接超过 5 分钟,则清除应用程序数据
- asp.net-core-mvc - 并非所有查询参数都出现在返回 url