How do I read environment variables in Postman tests?

53,051

Solution 1

According to the docs here you can use

environment["foo"] OR environment.foo
globals["bar"] OR globals.bar

to access them.

ie;

postman.setEnvironmentVariable("foo", "bar");

tests["environment var foo = bar"] = environment.foo === "bar";

postman.setGlobalVariable("foobar", "1");

tests["global var foobar = true"] = globals.foobar == true;

postman.setGlobalVariable("bar", "0");

tests["global var bar = false"] = globals.bar == false;

Solution 2

Postman updated their sandbox and added a pm.* API. Although the older syntax for reading variables in the test scripts still works, according to the docs:

Once a variable has been set, use the pm.variables.get() method or, alternatively, use the pm.environment.get() or pm.globals.get() method depending on the appropriate scope to fetch the variable. The method requires the variable name as a parameter to retrieve the stored value in a script.

Share:
53,051
chad
Author by

chad

Updated on July 05, 2022

Comments

  • chad
    chad almost 2 years

    I'm using the packaged app version of Postman to write tests against my Rest API. I'm trying to manage state between consecutive tests. To faciliate this, the Postman object exposed to the Javascript test runtime has methods for setting variables, but none for reading.

    postman.setEnvironmentVariable("key", value );
    

    Now, I can read this value in the next call via the {{key}} structure that sucks values in from the current environment. BUT, this doesn't work in the tests; it only works in the request building stuff.

    So, is there away to read this stuff from the tests?

  • Duncan
    Duncan about 8 years
    One thing I noticed is that when I set the global var, I set it as int; when I read it back it was a string. So I needed to parse it: tests["stress"] = data.Rating.RatingScoreList[1].Value === parseInt(globals.stress);
  • GrayedFox
    GrayedFox almost 8 years
    From the docs here: "Warning - Environment and global variables will always be stored as strings. If you're storing objects/arrays, be sure to JSON.stringify() them before storing, and JSON.parse() them while retrieving."
  • Jim Aho
    Jim Aho about 6 years
    Also note that globals is not supported if you're planning on using postman monitors, while environment variables are.