在集合中的整个请求中将 Postman 标头值保存到变量中
Posted
技术标签:
【中文标题】在集合中的整个请求中将 Postman 标头值保存到变量中【英文标题】:Saving a Postman header value into a variable throughout requests in a collection 【发布时间】:2017-07-11 09:08:17 【问题描述】:我正在尝试在 Postman 中自动化我的测试套件,这样我就不必手动进入每个请求并将该标头值更改为我最初放入第一个请求中的值。
我的测试套件目前看起来像:
第一个请求:
var headerValue = postman.setGlobalVariable('Number', headerValue);
console.log("Number is: " + headerValue);
第二个请求头:
Number - headerValue
我希望 headerValue 具有“数字”的值,因为我已将其设置为全局变量,但它返回为未定义。我不确定我做错了什么。
【问题讨论】:
【参考方案1】:你可以这样做
如果 Refresh_token 是标头值
postman.setGlobalVariable("refresh_token",postman.getResponseHeader("Refresh_token") );
官方文档:https://www.getpostman.com/docs/postman/scripts/test_examples
【讨论】:
此答案使用现已弃用的代码。你应该使用pm.globals.set("Number", pm.response.headers.get("Number"));
。【参考方案2】:
似乎不再推荐@Sai 的回答不起作用,因为getResponseHeader
现在已被弃用。更新后的代码是:
pm.test("First request", function()
let headerValue = pm.response.headers.get("Number")
pm.globals.set("Number", headerValue);
);
在第二个请求转到Headers
部分,添加一个新的标头,其中Number
作为键,Number
作为值。
【讨论】:
从 Postmant 7.34.0 开始,这应该是被接受的答案getResponseHeader
在 pm
对象上不存在。【参考方案3】:
就像对 Rostyslav Druzhchenko 答案的补充一样。在 Postman Client 中,您可以直接在 Tests 选项卡中添加:
【讨论】:
【参考方案4】:不,试试这个方法。对于邮递员,如果您想设置环境或全局变量,只需以这种方式使用 (key,value) 模式-
postman.setEnvironmentVariable(key,value) or
postman.setGlobalVariable(key,value)
最后使用 key
var headerValue = ”your value goes here”;
postman.setGlobalVariable('Number', headerValue);
并在您的子后续请求标头上使用 Number
【讨论】:
目前在控制台中没有定义以这种方式获取“数字” 有没有postman.getHeader方法或者类似的方法?我正在尝试在我的标头请求中获取标头的值,而不是在测试套件中对其进行硬编码 @jmcconnellpostman.getResponseHeader("Content-Type"); //Note: the getResponseHeader()
方法返回标头值(如果存在)。更多关于这里的方法getpostman.com/docs/testing_examples【参考方案5】:
在将标头保存到变量之前记录标头的简单方法:
let authToken = postman.getResponseHeader("Authorization")
console.log("auth header -> ", authToken)
postman.setEnvironmentVariable("auth", authToken)
【讨论】:
以上是关于在集合中的整个请求中将 Postman 标头值保存到变量中的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot 的 Postman Post 请求保存了整个 JSON 正文,而不仅仅是字段值。我该如何解决?