41

I am trying to automate my test suite in Postman so that I don't have to manually go into each request and change that header value to what I initially put in the first request.

My test suite currently looks like:

First Request:

var headerValue = postman.setGlobalVariable('Number', headerValue);
console.log("Number is: " + headerValue);

Second Request Header:

Number - {{headerValue}}

I would expect headerValue to have the value of 'Number' since I have set it as a global variable but it is coming back as undefined. I'm not sure what I am doing wrong.

Henke
  • 4,445
  • 3
  • 31
  • 44
jmcode
  • 511
  • 1
  • 4
  • 5

5 Answers5

48

This is how you can do this

If Refresh_token is the header value

postman.setGlobalVariable("refresh_token",postman.getResponseHeader("Refresh_token") );

Official Documentation: https://www.getpostman.com/docs/postman/scripts/test_examples

Sai Ram Reddy
  • 1,079
  • 13
  • 14
32

It seems like @Sai's answer does not work is not recommended anymore, since getResponseHeader is deprecated now. The updated code is:

pm.test("First request", function() {
    let headerValue = pm.response.headers.get("Number")
    pm.globals.set("Number", headerValue);
});

In the second request go Headers section, add a new header with Number as a key and {{Number}} as a value.

SGT Grumpy Pants
  • 4,118
  • 4
  • 42
  • 64
Rostyslav Druzhchenko
  • 3,673
  • 3
  • 33
  • 38
  • This should be accepted answer as of Postmant 7.34.0 `getResponseHeader` does not exist on `pm` object. – Miquel Canal Oct 27 '20 at 19:48
  • I would also add that if the variable is contained in the collection scope, not global, it should be `pm.collectionVariables.set("Number", headerValue)`. – Alexandre Sep 14 '22 at 20:35
5

Just as an addition to Rostyslav Druzhchenko's answer. In Postman Client you can add this directly in the Tests tab: postman ui

pme
  • 14,156
  • 3
  • 52
  • 95
1

No, try this way. For postman, if you want to set environment or global variable just use (key,value ) pattern this way-

postman.setEnvironmentVariable(key,value) or   
postman.setGlobalVariable(key,value) 

and finally grab them using {{key}}

var headerValue = ”your value goes here”;
postman.setGlobalVariable('Number', headerValue);

and use {{Number}} on your sub subsequent request header

A l w a y s S u n n y
  • 36,497
  • 8
  • 60
  • 103
  • Currently getting a 'Number' is not defined doing it this way in the console still – jmcode Feb 21 '17 at 16:35
  • Is there a postman.getHeader method or a method that is similar to that? I'm trying to get the value of a header in my header request instead of hard coding it in the test suite – jmcode Feb 21 '17 at 16:46
  • @jmcconnell `postman.getResponseHeader("Content-Type"); //Note: the getResponseHeader()` method returns the header value, if it exists. and more about methods here https://www.getpostman.com/docs/testing_examples – A l w a y s S u n n y Feb 21 '17 at 17:16
0

Simple approach with logging of you header before saving it to variable:

let authToken = postman.getResponseHeader("Authorization")
console.log("auth header -> ", authToken)
postman.setEnvironmentVariable("auth", authToken)
Oleksandr Yefymov
  • 6,081
  • 2
  • 22
  • 32