Sometimes you want to run different requests based on results from earlier requests. Conditional request execution helps you control which request runs next.
Conditional request execution (setNextRequest) in Postman
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
Postman
pm.setNextRequest('Request Name');Use the exact name of the request as it appears in your Postman collection.
Calling pm.setNextRequest(null); stops the collection run.
Examples
Postman
pm.setNextRequest('Get User Details');Postman
if (pm.response.code === 200) { pm.setNextRequest('Process Data'); } else { pm.setNextRequest(null); }
Postman
let count = pm.environment.get('count') || 0; if (count < 3) { pm.environment.set('count', count + 1); pm.setNextRequest('Repeat Request'); } else { pm.setNextRequest(null); }
Sample Program
This script runs after the 'Login' request. If login is successful (status 200), it runs 'Get Profile' next. Otherwise, it stops the collection run.
Postman
// Test script for 'Login' request if (pm.response.code === 200) { pm.setNextRequest('Get Profile'); } else { pm.setNextRequest(null); }
Important Notes
Make sure request names are spelled exactly as in your collection.
Using pm.setNextRequest(null); stops the collection run immediately.
Conditional execution helps create smarter, efficient test flows.
Summary
Use pm.setNextRequest() to control which request runs next.
It helps you skip, repeat, or stop requests based on conditions.
This makes your API tests more flexible and realistic.
Practice
1. What is the main purpose of
pm.setNextRequest() in Postman?easy
Solution
Step 1: Understand the function of
This function controls the flow of requests by specifying which request should run next.pm.setNextRequest()Step 2: Compare with other options
Options B, C, and D describe different actions not related to controlling the next request.Final Answer:
To decide which request runs next based on a condition -> Option AQuick Check:
pm.setNextRequest() controls next request execution [OK]
Hint: Remember: setNextRequest controls the next request flow [OK]
Common Mistakes:
- Thinking it repeats the current request
- Confusing it with stopping the collection run
- Assuming it resets variables
2. Which of the following is the correct syntax to set the next request named "Login" in a Postman test script?
easy
Solution
Step 1: Check the syntax for string argument
The request name must be passed as a string in quotes. Both single or double quotes are valid, but must be paired correctly.Step 2: Identify correct option
pm.setNextRequest("Login"); uses double quotes correctly. pm.setNextRequest('Login'); also uses single quotes correctly. Both are valid syntaxes. pm.setNextRequest(Login); lacks quotes, causing a syntax error. pm.setNextRequest(Login') has mismatched quotes.Final Answer:
pm.setNextRequest("Login"); -> Option BQuick Check:
Request name must be a quoted string [OK]
Hint: Always quote request names in setNextRequest() [OK]
Common Mistakes:
- Forgetting quotes around request name
- Mismatched or missing quotes
- Omitting semicolon at line end
3. Consider this test script in Postman after a request named "CheckStatus":
if (pm.response.code === 200) {
pm.setNextRequest('ProcessData');
} else {
pm.setNextRequest('ErrorHandler');
}
If the response code is 404, which request runs next?medium
Solution
Step 1: Analyze the condition
The script checks if response code is 200. If true, it sets next request to 'ProcessData'. Otherwise, it sets to 'ErrorHandler'.Step 2: Apply the response code 404
Since 404 is not 200, the else block runs, setting next request to 'ErrorHandler'.Final Answer:
ErrorHandler -> Option AQuick Check:
404 ≠ 200, so next request = ErrorHandler [OK]
Hint: If condition false, else block sets next request [OK]
Common Mistakes:
- Assuming 404 triggers the if block
- Thinking current request repeats
- Ignoring else block logic
4. You wrote this test script in Postman:
if (pm.response.code = 200) {
pm.setNextRequest('NextStep');
} else {
pm.setNextRequest('Stop');
}
What is the problem with this script?medium
Solution
Step 1: Identify the if condition error
The condition uses single equals (=), which assigns 200 to pm.response.code instead of comparing it.Step 2: Understand consequences
This causes a bug: the if condition always evaluates to true, and response code is overwritten.Final Answer:
Using assignment (=) instead of comparison (===) in the if condition -> Option DQuick Check:
Use === for comparison, not = [OK]
Hint: Use === for comparison, not = assignment [OK]
Common Mistakes:
- Confusing = with === in conditions
- Removing quotes from request names
- Thinking setNextRequest can't be conditional
5. You want to create a Postman flow where if a variable
userExists is true, the next request is "GetUserData", else the flow stops. Which script correctly implements this in the test tab?hard
Solution
Step 1: Understand variable type and condition
pm.variables.get returns a string or boolean depending on how set. Using it directly in if checks truthiness correctly.Step 2: Check stopping the flow
Setting pm.setNextRequest(null) stops the collection run, which matches the requirement to stop if userExists is false.Step 3: Evaluate options
if (pm.variables.get('userExists')) { pm.setNextRequest('GetUserData'); } else { pm.setNextRequest(null); } uses direct truthiness check and null to stop, which is correct. Options A and C compare strictly to boolean or string which may fail if variable type differs. if (pm.variables.get('userExists') == 'true') { pm.setNextRequest('GetUserData'); } else { pm.setNextRequest('Stop'); } tries to set next request to 'Stop' which is not a request name and won't stop the flow.Final Answer:
if (pm.variables.get('userExists')) { pm.setNextRequest('GetUserData'); } else { pm.setNextRequest(null); } -> Option CQuick Check:
Use truthy check and null to stop flow [OK]
Hint: Use null in setNextRequest to stop flow [OK]
Common Mistakes:
- Comparing variable to string 'true' instead of boolean
- Setting next request to a non-existent name to stop
- Not using null to stop the collection run
