Bird
Raised Fist0
Postmantesting~15 mins

Saving responses in Postman - Build an Automation Script

Choose your learning style10 modes available
Save API response to environment variable
Preconditions (2)
Step 1: Open Postman and create a new GET request to 'https://jsonplaceholder.typicode.com/todos/1'
Step 2: Send the request
Step 3: In the Tests tab, write a script to save the 'title' field from the JSON response to an environment variable named 'todoTitle'
Step 4: Save the request
Step 5: Send the request again
Step 6: Verify that the environment variable 'todoTitle' is set with the value from the response
✅ Expected Result: The environment variable 'todoTitle' contains the 'title' value from the API response after the request is sent
Automation Requirements - Postman Tests (JavaScript)
Assertions Needed:
Verify response status code is 200
Verify response body contains 'title' field
Verify environment variable 'todoTitle' is set with correct value
Best Practices:
Use pm.response.json() to parse JSON response
Use pm.environment.set() to save variables
Use pm.test() for assertions
Keep test scripts clear and simple
Automated Solution
Postman
pm.test('Status code is 200', () => {
    pm.response.to.have.status(200);
});

const responseJson = pm.response.json();

pm.test('Response has title field', () => {
    pm.expect(responseJson).to.have.property('title');
});

pm.environment.set('todoTitle', responseJson.title);

pm.test('Environment variable todoTitle is set', () => {
    const savedTitle = pm.environment.get('todoTitle');
    pm.expect(savedTitle).to.eql(responseJson.title);
});

This script runs after the API response is received in Postman.

First, it checks the status code is 200 to confirm the request succeeded.

Then it parses the JSON response using pm.response.json().

It asserts that the response contains a title field.

Next, it saves the title value to an environment variable called todoTitle using pm.environment.set().

Finally, it verifies that the environment variable was set correctly by comparing it to the response value.

This approach ensures the response data is saved and can be reused in other requests or tests.

Common Mistakes - 3 Pitfalls
Not parsing the response JSON before accessing fields
{'mistake': 'Using pm.variables.set() instead of pm.environment.set() when intending to save environment variables', 'why_bad': "pm.variables.set() sets variables only for the current request scope, not environment scope, so the variable won't persist.", 'correct_approach': 'Use pm.environment.set() to save variables that persist across requests.'}
Not adding assertions to verify the response status code
Bonus Challenge

Now add data-driven testing by saving the 'title' field from three different todo items (ids 1, 2, and 3) into separate environment variables.

Show Hint

Practice

(1/5)
1. What is the main purpose of saving responses in Postman?
easy
A. To speed up the API server
B. To delete old API requests automatically
C. To keep track of API outputs for later use
D. To change the API endpoint URL

Solution

  1. Step 1: Understand the role of saving responses

    Saving responses allows testers to keep the output data from API calls for future reference or validation.
  2. Step 2: Identify the correct purpose

    Among the options, only keeping track of API outputs matches the purpose of saving responses.
  3. Final Answer:

    To keep track of API outputs for later use -> Option C
  4. Quick Check:

    Saving responses = keep API outputs [OK]
Hint: Saving responses means storing API outputs for reuse [OK]
Common Mistakes:
  • Confusing saving responses with deleting requests
  • Thinking it speeds up the server
  • Assuming it changes API URLs
2. Which Postman script command is used to save a value from a response into an environment variable?
easy
A. pm.response.save()
B. pm.environment.set()
C. pm.request.store()
D. pm.variable.get()

Solution

  1. Step 1: Recall Postman scripting commands

    To save data into environment variables, Postman uses the command pm.environment.set(variableName, value).
  2. Step 2: Match the command to the options

    Only pm.environment.set() correctly saves a value into an environment variable.
  3. Final Answer:

    pm.environment.set() -> Option B
  4. Quick Check:

    Save to environment = pm.environment.set() [OK]
Hint: Use pm.environment.set() to save response data [OK]
Common Mistakes:
  • Using pm.response.save() which does not exist
  • Confusing get() with set()
  • Trying to save with pm.request.store() which is invalid
3. Given this Postman test script, what will be the value saved in the environment variable 'userId' if the response JSON is {"id": 42, "name": "Alice"}?
let jsonData = pm.response.json();
pm.environment.set('userId', jsonData.id);
medium
A. 42
B. null
C. undefined
D. "Alice"

Solution

  1. Step 1: Parse the response JSON

    The response JSON has an "id" field with value 42 and a "name" field with "Alice".
  2. Step 2: Check the script saving the value

    The script saves jsonData.id into 'userId', so it saves 42.
  3. Final Answer:

    42 -> Option A
  4. Quick Check:

    jsonData.id = 42 [OK]
Hint: jsonData.id saves the number 42 from response [OK]
Common Mistakes:
  • Saving the name instead of id
  • Assuming undefined if JSON parsing fails
  • Confusing string and number values
4. You wrote this test script to save a token from response but it does not save correctly:
let jsonData = pm.response.json();
pm.environment.set('token', jsonData.token);
What is a likely reason the token is not saved?
medium
A. The response does not contain a 'token' field
B. pm.environment.set() is not a valid function
C. You must use pm.response.save() instead
D. The variable name 'token' is reserved

Solution

  1. Step 1: Check the response JSON fields

    If the response JSON does not have a 'token' field, jsonData.token will be undefined.
  2. Step 2: Understand saving undefined values

    Saving undefined means the environment variable 'token' will not be set correctly.
  3. Final Answer:

    The response does not contain a 'token' field -> Option A
  4. Quick Check:

    Missing field = no saved value [OK]
Hint: Check response fields before saving variables [OK]
Common Mistakes:
  • Thinking pm.environment.set() is invalid
  • Using non-existent pm.response.save()
  • Assuming variable names are reserved
5. You want to save the 'sessionId' from a nested JSON response:
{
  "user": {
    "id": 10,
    "session": {
      "sessionId": "abc123"
    }
  }
}
Which script correctly saves 'sessionId' into an environment variable?
hard
A. let jsonData = pm.response.json(); pm.environment.set('sessionId', jsonData.user.session['id']);
B. let jsonData = pm.response.json(); pm.environment.set('sessionId', jsonData.sessionId);
C. let jsonData = pm.response.json(); pm.environment.set('sessionId', jsonData.user.sessionId);
D. let jsonData = pm.response.json(); pm.environment.set('sessionId', jsonData.user.session.sessionId);

Solution

  1. Step 1: Analyze the JSON structure

    The 'sessionId' is inside user > session > sessionId.
  2. Step 2: Match the correct path in script

    Only jsonData.user.session.sessionId correctly accesses the nested 'sessionId'.
  3. Final Answer:

    let jsonData = pm.response.json(); pm.environment.set('sessionId', jsonData.user.session.sessionId); -> Option D
  4. Quick Check:

    Nested access = jsonData.user.session.sessionId [OK]
Hint: Use full path for nested JSON fields [OK]
Common Mistakes:
  • Accessing sessionId directly from jsonData
  • Using wrong nested keys
  • Confusing sessionId with user id
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard