Bird
Raised Fist0
Postmantesting~15 mins

Collection variables in Postman - Build an Automation Script

Choose your learning style10 modes available
Verify usage of collection variables in Postman requests
Preconditions (3)
Step 1: Open the 'User API Tests' collection
Step 2: Create a new GET request named 'Get User Info'
Step 3: Set the request URL to '{{baseUrl}}/users/123'
Step 4: Send the request
Step 5: Verify the response status code is 200
Step 6: Verify the response body contains a field 'id' with value 123
✅ Expected Result: The request uses the collection variable 'baseUrl' correctly, the response status code is 200, and the response body contains the user id 123
Automation Requirements - Postman/Newman
Assertions Needed:
Response status code is 200
Response body contains 'id' field with value 123
Best Practices:
Use pm.collectionVariables.get() to access collection variables
Use pm.test() for assertions
Avoid hardcoding URLs; use collection variables instead
Use descriptive test names
Automated Solution
Postman
pm.test('Status code is 200', function () {
    pm.response.to.have.status(200);
});

const userId = 123;
const responseJson = pm.response.json();
pm.test(`Response has user id ${userId}`, function () {
    pm.expect(responseJson.id).to.eql(userId);
});

The first test checks that the response status code is 200 using pm.response.to.have.status(200). This confirms the request was successful.

Next, we parse the response body as JSON with pm.response.json(). We then assert that the id field in the response equals the expected user id (123) using pm.expect().to.eql().

We use pm.test() to group assertions with descriptive names, making the test report clear.

The request URL uses the collection variable {{baseUrl}} to avoid hardcoding the API base URL, which improves maintainability.

Common Mistakes - 3 Pitfalls
Hardcoding the API URL instead of using collection variables
{'mistake': 'Not using pm.test() for assertions', 'why_bad': "Without pm.test(), assertions won't be reported properly in the test results.", 'correct_approach': 'Wrap assertions inside pm.test() with descriptive names for clear test reports.'}
{'mistake': 'Accessing variables incorrectly (e.g., using environment variables instead of collection variables)', 'why_bad': 'This can cause tests to fail if the wrong variable scope is used.', 'correct_approach': "Use pm.collectionVariables.get('variableName') to access collection variables explicitly."}
Bonus Challenge

Now add data-driven testing by running the same request for user IDs 101, 123, and 150 using collection variables

Show Hint

Practice

(1/5)
1. What is the main purpose of collection variables in Postman?
easy
A. To store reusable values accessible by all requests in a collection
B. To store environment-specific URLs only
C. To save responses from API calls automatically
D. To create user interface themes in Postman

Solution

  1. Step 1: Understand what collection variables do

    Collection variables hold values that can be reused across all requests in a collection, making tests easier to manage.
  2. Step 2: Compare options with this purpose

    Only To store reusable values accessible by all requests in a collection describes storing reusable values for all requests, which matches the purpose of collection variables.
  3. Final Answer:

    To store reusable values accessible by all requests in a collection -> Option A
  4. Quick Check:

    Collection variables = reusable values [OK]
Hint: Remember: collection variables share values across all collection requests [OK]
Common Mistakes:
  • Confusing collection variables with environment variables
  • Thinking collection variables store API responses
  • Assuming collection variables control UI settings
2. Which syntax correctly uses a collection variable named api_key inside a request URL in Postman?
easy
A. https://api.example.com/data?key=api_key
B. https://api.example.com/data?key=[api_key]
C. https://api.example.com/data?key=$api_key
D. https://api.example.com/data?key={{api_key}}

Solution

  1. Step 1: Recall Postman variable syntax

    Postman uses double curly braces {{variable_name}} to insert variables into requests.
  2. Step 2: Match syntax with options

    Only https://api.example.com/data?key={{api_key}} uses {{api_key}}, which is the correct way to reference a collection variable.
  3. Final Answer:

    https://api.example.com/data?key={{api_key}} -> Option D
  4. Quick Check:

    Variable syntax = {{variable_name}} [OK]
Hint: Use double curly braces {{}} to insert variables in Postman [OK]
Common Mistakes:
  • Using plain variable name without braces
  • Using square brackets or dollar sign instead of {{}}
  • Confusing environment and collection variable syntax
3. Given a collection variable base_url set to https://api.test.com, what will be the full URL for this request?
GET {{base_url}}/users
medium
A. GET https://api.test.com/users
B. GET {{base_url}}/users
C. GET https://api.test.com{{base_url}}/users
D. GET /users

Solution

  1. Step 1: Substitute the collection variable

    The variable {{base_url}} is replaced by its value https://api.test.com in the request URL.
  2. Step 2: Combine the parts of the URL

    After substitution, the URL becomes https://api.test.com/users as the path /users is appended.
  3. Final Answer:

    GET https://api.test.com/users -> Option A
  4. Quick Check:

    Variable replaced by value = full URL [OK]
Hint: Replace {{variable}} with its value to get the full URL [OK]
Common Mistakes:
  • Not replacing the variable and leaving {{base_url}} as is
  • Appending variable value incorrectly
  • Ignoring the path after the variable
4. You set a collection variable token but your request still sends Authorization: Bearer {{token}} literally without replacing it. What is the likely cause?
medium
A. You used single curly braces instead of double
B. The collection variable token was not saved properly
C. Postman does not support collection variables in headers
D. The variable name is case-insensitive and mismatched

Solution

  1. Step 1: Understand variable replacement behavior

    If Postman sends {{token}} literally, it means the variable was not found or set correctly.
  2. Step 2: Identify common causes

    Most often, the variable was not saved or defined in the collection variables, so Postman cannot replace it.
  3. Final Answer:

    The collection variable token was not saved properly -> Option B
  4. Quick Check:

    Missing variable value = no replacement [OK]
Hint: Check if collection variable is saved before using it [OK]
Common Mistakes:
  • Assuming single braces work for variables
  • Thinking headers can't use variables
  • Ignoring case sensitivity issues
5. You want to use a collection variable user_id in a request body JSON like this:
{ "id": "{{user_id}}", "action": "delete" }

But the API expects id as a number, not a string. How should you fix the request body to send user_id as a number?
hard
A. { "id": "{{user_id}}", "action": "delete" }
B. { "id": '${{user_id}}', "action": "delete" }
C. { "id": {{user_id}}, "action": "delete" }
D. { "id": [{{user_id}}], "action": "delete" }

Solution

  1. Step 1: Understand JSON data types

    In JSON, numbers should not be inside quotes; quotes make them strings.
  2. Step 2: Adjust variable usage in JSON

    Remove quotes around {{user_id}} so Postman inserts the number directly, matching API expectation.
  3. Final Answer:

    { "id": {{user_id}}, "action": "delete" } -> Option C
  4. Quick Check:

    Numbers in JSON = no quotes [OK]
Hint: Remove quotes around {{variable}} to send numbers, not strings [OK]
Common Mistakes:
  • Keeping quotes around numeric variables
  • Using wrong variable syntax with $ or []
  • Sending arrays instead of single values
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