How do I read environment variables in Postman tests?
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 thepm.environment.get()
orpm.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.
chad
Updated on July 05, 2022Comments
-
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 about 8 yearsOne 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 almost 8 yearsFrom 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 about 6 yearsAlso note that globals is not supported if you're planning on using postman monitors, while environment variables are.