Saving responses in Postman - Build an Automation Script
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.
Now add data-driven testing by saving the 'title' field from three different todo items (ids 1, 2, and 3) into separate environment variables.
Practice
Solution
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.Step 2: Identify the correct purpose
Among the options, only keeping track of API outputs matches the purpose of saving responses.Final Answer:
To keep track of API outputs for later use -> Option CQuick Check:
Saving responses = keep API outputs [OK]
- Confusing saving responses with deleting requests
- Thinking it speeds up the server
- Assuming it changes API URLs
Solution
Step 1: Recall Postman scripting commands
To save data into environment variables, Postman uses the command pm.environment.set(variableName, value).Step 2: Match the command to the options
Only pm.environment.set() correctly saves a value into an environment variable.Final Answer:
pm.environment.set() -> Option BQuick Check:
Save to environment = pm.environment.set() [OK]
- Using pm.response.save() which does not exist
- Confusing get() with set()
- Trying to save with pm.request.store() which is invalid
let jsonData = pm.response.json();
pm.environment.set('userId', jsonData.id);Solution
Step 1: Parse the response JSON
The response JSON has an "id" field with value 42 and a "name" field with "Alice".Step 2: Check the script saving the value
The script saves jsonData.id into 'userId', so it saves 42.Final Answer:
42 -> Option AQuick Check:
jsonData.id = 42 [OK]
- Saving the name instead of id
- Assuming undefined if JSON parsing fails
- Confusing string and number values
let jsonData = pm.response.json();
pm.environment.set('token', jsonData.token);
What is a likely reason the token is not saved?Solution
Step 1: Check the response JSON fields
If the response JSON does not have a 'token' field, jsonData.token will be undefined.Step 2: Understand saving undefined values
Saving undefined means the environment variable 'token' will not be set correctly.Final Answer:
The response does not contain a 'token' field -> Option AQuick Check:
Missing field = no saved value [OK]
- Thinking pm.environment.set() is invalid
- Using non-existent pm.response.save()
- Assuming variable names are reserved
{
"user": {
"id": 10,
"session": {
"sessionId": "abc123"
}
}
}
Which script correctly saves 'sessionId' into an environment variable?Solution
Step 1: Analyze the JSON structure
The 'sessionId' is inside user > session > sessionId.Step 2: Match the correct path in script
Only jsonData.user.session.sessionId correctly accesses the nested 'sessionId'.Final Answer:
let jsonData = pm.response.json(); pm.environment.set('sessionId', jsonData.user.session.sessionId); -> Option DQuick Check:
Nested access = jsonData.user.session.sessionId [OK]
- Accessing sessionId directly from jsonData
- Using wrong nested keys
- Confusing sessionId with user id
Ready to prove it?
Pass the test and this pattern moves unknown
