Bird
Raised Fist0
Postmantesting~15 mins

Looping in flows in Postman - Build an Automation Script

Choose your learning style10 modes available
Automate looping through multiple API requests in Postman collection runner
Preconditions (3)
Step 1: Open the Postman collection runner
Step 2: Select the collection containing the API request
Step 3: Load a data file (CSV or JSON) with multiple sets of input data
Step 4: Start the collection runner to execute the request for each data row
Step 5: Observe that the request runs once per data row, looping through all inputs
Step 6: Verify the response status code is 200 for each request
Step 7: Verify the response body contains expected data for each input
✅ Expected Result: The collection runner executes the API request once per data row, looping through all inputs. Each response returns status 200 and expected data.
Automation Requirements - Postman test scripts with Collection Runner
Assertions Needed:
Verify response status code is 200
Verify response body contains expected data based on input
Verify the loop runs for all data rows
Best Practices:
Use pm.test() for assertions
Use data-driven testing with external data files
Use pm.iterationData to access current data row
Keep test scripts simple and readable
Automated Solution
Postman
pm.test('Status code is 200', () => {
    pm.response.to.have.status(200);
});

const expectedValue = pm.iterationData.get('expectedValue');

pm.test('Response body contains expected value', () => {
    const jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(expectedValue);
});

This Postman test script runs after each API request in the collection runner.

First, it checks that the response status code is 200 using pm.response.to.have.status(200).

Then, it retrieves the expected value for the current iteration from the data file using pm.iterationData.get('expectedValue').

Finally, it asserts that the response JSON's value field equals the expected value.

This script runs once per data row, enabling looping through inputs in the collection runner.

Common Mistakes - 3 Pitfalls
Hardcoding expected values inside the test script instead of using data files
Not checking the response status code before validating response body
Using console.log for validation instead of pm.test assertions
Bonus Challenge

Now add data-driven testing with 3 different inputs using a JSON data file

Show Hint

Practice

(1/5)
1. What is the main purpose of using loops in Postman test flows?
easy
A. To create new API endpoints
B. To store environment variables permanently
C. To change the Postman interface theme
D. To repeat test steps automatically for multiple inputs

Solution

  1. Step 1: Understand the role of loops in testing

    Loops allow repeating actions multiple times without manual repetition.
  2. Step 2: Identify the correct purpose in Postman context

    In Postman, loops help run tests on many inputs automatically.
  3. Final Answer:

    To repeat test steps automatically for multiple inputs -> Option D
  4. Quick Check:

    Loops = Repeat steps [OK]
Hint: Loops repeat actions to save time [OK]
Common Mistakes:
  • Thinking loops create new APIs
  • Confusing loops with UI settings
  • Assuming loops store variables permanently
2. Which of the following is the correct syntax to start a for loop in Postman test script?
easy
A. for i = 0; i < 5; i++ { }
B. for (let i = 0; i < 5; i++) { }
C. loop (i = 0; i < 5; i++) { }
D. foreach i in 5 { }

Solution

  1. Step 1: Recall JavaScript for loop syntax

    Postman scripts use JavaScript, so the loop must follow JS syntax.
  2. Step 2: Identify the correct syntax

    Correct JS for loop uses: for (let i = 0; i < 5; i++) { }
  3. Final Answer:

    for (let i = 0; i < 5; i++) { } -> Option B
  4. Quick Check:

    JS for loop = for (init; condition; increment) [OK]
Hint: JS loops use parentheses and braces [OK]
Common Mistakes:
  • Omitting parentheses around loop conditions
  • Using 'loop' or 'foreach' which are invalid in JS
  • Missing 'let' or 'var' declaration
3. What will be the output in Postman console after running this script?
let sum = 0;
for (let i = 1; i <= 3; i++) {
  sum += i;
}
console.log(sum);
medium
A. 6
B. 123
C. 3
D. 0

Solution

  1. Step 1: Trace the loop iterations

    i goes from 1 to 3, sum adds i each time: 0+1=1, 1+2=3, 3+3=6.
  2. Step 2: Confirm final sum value

    After loop ends, sum is 6, which is printed to console.
  3. Final Answer:

    6 -> Option A
  4. Quick Check:

    Sum 1+2+3 = 6 [OK]
Hint: Add numbers step-by-step in loop [OK]
Common Mistakes:
  • Concatenating numbers as strings instead of adding
  • Stopping loop early or late
  • Printing initial sum without update
4. Identify the error in this Postman test script loop:
for (let i = 0; i < 5; i++)
  console.log(i);
}
medium
A. Loop condition should be i <= 5
B. Incorrect variable declaration for i
C. Missing opening brace '{' after for loop
D. console.log cannot be used inside loops

Solution

  1. Step 1: Check loop syntax

    The for loop lacks an opening brace '{' after the loop declaration.
  2. Step 2: Confirm braces balance

    There is a closing brace '}' without a matching opening brace, causing syntax error.
  3. Final Answer:

    Missing opening brace '{' after for loop -> Option C
  4. Quick Check:

    Braces must match in loops [OK]
Hint: Always open and close braces in loops [OK]
Common Mistakes:
  • Ignoring missing braces
  • Changing loop condition unnecessarily
  • Thinking console.log is invalid inside loops
5. You want to run a test in Postman that sends requests for each user ID in an array [101, 102, 103]. Which looping method is best to use inside the pm.sendRequest callback to handle each ID sequentially?
hard
A. Use a recursive function to send requests one after another
B. Use a forEach loop without waiting for requests to finish
C. Use a simple for loop with asynchronous calls inside
D. Use a while loop that never ends

Solution

  1. Step 1: Understand asynchronous request handling

    pm.sendRequest is async; simple loops run all requests at once without waiting.
  2. Step 2: Choose method to run requests sequentially

    Recursive function can wait for each request to finish before next starts, ensuring order.
  3. Final Answer:

    Use a recursive function to send requests one after another -> Option A
  4. Quick Check:

    Sequential async calls = recursion [OK]
Hint: Use recursion for sequential async loops [OK]
Common Mistakes:
  • Using forEach which runs all requests in parallel
  • Using infinite while loops causing hang
  • Assuming simple for loops wait for async calls
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