Bird
Raised Fist0
Postmantesting~8 mins

Send request block in Postman - Framework Patterns

Choose your learning style10 modes available
Framework Mode - Send request block
Folder Structure
PostmanCollectionProject/
├── collections/
│   └── MyAPI.postman_collection.json
├── environments/
│   ├── dev.postman_environment.json
│   ├── staging.postman_environment.json
│   └── prod.postman_environment.json
├── tests/
│   └── sendRequestTests.postman_test_script.js
├── scripts/
│   └── preRequestScripts.js
├── globals.json
└── README.md
Test Framework Layers
  • Collections: Group of API requests organized by feature or service.
  • Environments: Variables for different deployment stages (dev, staging, prod).
  • Pre-request Scripts: JavaScript code executed before sending a request (e.g., setting tokens).
  • Tests: JavaScript assertions run after receiving a response to validate results.
  • Globals: Variables accessible across collections and environments.
Configuration Patterns
  • Environment Variables: Store base URLs, API keys, and credentials per environment to switch easily.
  • Global Variables: Use for values shared across collections like common headers.
  • Pre-request Scripts: Dynamically set or update variables before requests (e.g., generate auth tokens).
  • Collection Variables: Variables scoped to a collection for modularity.
  • Use Postman Environments: Select environment before running tests to target correct API endpoints.
Test Reporting and CI/CD Integration
  • Postman Test Results: View pass/fail status and detailed logs in Postman Test Runner.
  • Newman CLI: Run collections from command line and generate JSON, HTML, or JUnit reports.
  • CI/CD Integration: Use Newman in pipelines (GitHub Actions, Jenkins, GitLab CI) to automate API tests on code changes.
  • Report Storage: Save reports as artifacts or send notifications on failures.
Best Practices
  • Use Environment Variables: Avoid hardcoding URLs or secrets; switch environments easily.
  • Write Clear Tests: Use simple assertions with descriptive messages for easy debugging.
  • Modularize Requests: Group related requests in collections and use folders for organization.
  • Use Pre-request Scripts: Automate token generation or setup to keep tests independent.
  • Version Control Collections: Export and store collections in Git for collaboration and history.
Self Check

Where in this folder structure would you add a new API request to test user login functionality?

Key Result
Organize Postman API tests using collections, environments, pre-request scripts, and Newman for automation.

Practice

(1/5)
1. What is the main purpose of the Send request block in Postman?
easy
A. To call APIs and test their responses automatically
B. To design the user interface of an application
C. To write database queries
D. To create user accounts in Postman

Solution

  1. Step 1: Understand the role of Send request block

    The Send request block is used to make API calls and check how the API behaves.
  2. Step 2: Compare options with the purpose

    Only To call APIs and test their responses automatically correctly describes calling APIs and testing responses automatically.
  3. Final Answer:

    To call APIs and test their responses automatically -> Option A
  4. Quick Check:

    Send request block = call and test APIs [OK]
Hint: Send request block is for API calls and testing [OK]
Common Mistakes:
  • Confusing Send request with UI design
  • Thinking it writes database queries
  • Assuming it manages user accounts
2. Which of the following is the correct way to send a GET request using the Send request block in Postman scripts?
easy
A. pm.sendRequest({url: 'https://api.example.com', method: 'GET'}, callback);
B. pm.sendRequest('https://api.example.com', 'GET', callback);
C. sendRequest({url: 'https://api.example.com', method: 'GET'});
D. pm.requestSend({url: 'https://api.example.com', method: 'GET'}, callback);

Solution

  1. Step 1: Recall correct syntax for pm.sendRequest

    The correct syntax uses an object with url and method, plus a callback function.
  2. Step 2: Check each option's syntax

    pm.sendRequest({url: 'https://api.example.com', method: 'GET'}, callback); matches the correct syntax: pm.sendRequest({url: ..., method: ...}, callback); others have wrong function names or argument formats.
  3. Final Answer:

    pm.sendRequest({url: 'https://api.example.com', method: 'GET'}, callback); -> Option A
  4. Quick Check:

    pm.sendRequest uses object + callback [OK]
Hint: Use object with url and method in pm.sendRequest [OK]
Common Mistakes:
  • Passing URL and method as separate arguments
  • Using wrong function names like sendRequest or pm.requestSend
  • Omitting the callback function
3. Consider this Postman test script snippet:
pm.sendRequest({
  url: 'https://api.example.com/data',
  method: 'GET'
}, function (err, res) {
  pm.test('Status code is 200', function () {
    pm.expect(res.code).to.eql(200);
  });
});
What will happen when this script runs?
medium
A. The script will throw a syntax error
B. The test will fail because the callback is missing
C. The test will always pass regardless of status code
D. The test will pass if the API returns status 200

Solution

  1. Step 1: Analyze the sendRequest call and callback

    The script sends a GET request and uses a callback to check the response status code.
  2. Step 2: Understand the test assertion

    The test asserts that the response code equals 200, so it passes only if the API returns 200.
  3. Final Answer:

    The test will pass if the API returns status 200 -> Option D
  4. Quick Check:

    Test passes if res.code == 200 [OK]
Hint: Test passes only if response code matches 200 [OK]
Common Mistakes:
  • Thinking callback is missing
  • Assuming syntax error without checking code
  • Believing test passes regardless of response
4. You wrote this Postman script to send a request:
pm.sendRequest({
  url: 'https://api.example.com/users',
  method: 'POST',
  body: {
    mode: 'raw',
    raw: JSON.stringify({name: 'John'})
  }
}, function (err, res) {
  // callback function
});
But the request is not sent. What is the likely problem?
medium
A. Incorrect HTTP method; POST is not allowed
B. Missing callback function to handle the response
C. Body should be sent as form-data, not raw JSON
D. URL is invalid and causes failure

Solution

  1. Step 1: Check the sendRequest syntax

    pm.sendRequest requires a callback function as the second argument to execute the request properly.
  2. Step 2: Identify missing callback

    The script lacks the callback function, so the request is not sent or handled.
  3. Final Answer:

    Missing callback function to handle the response -> Option B
  4. Quick Check:

    sendRequest needs callback to send request [OK]
Hint: Always include callback function in pm.sendRequest [OK]
Common Mistakes:
  • Ignoring the need for callback function
  • Assuming HTTP method is wrong without checking API docs
  • Thinking body format is always wrong
  • Blaming URL without testing it
5. You want to send a POST request with JSON data and verify the response contains a field success set to true. Which Postman script correctly sends the request and tests the response?
hard
A. pm.sendRequest({url: 'https://api.example.com/save', method: 'POST', body: {data: 123}}, function (err, res) { pm.test('Success is true', () => { pm.expect(res.success).to.be.true; }); });
B. pm.sendRequest('https://api.example.com/save', 'POST', {data: 123}, function (err, res) { pm.expect(res.success).to.equal(true); });
C. pm.sendRequest({url: 'https://api.example.com/save', method: 'POST', header: {'Content-Type': 'application/json'}, body: {mode: 'raw', raw: JSON.stringify({data: 123})}}, function (err, res) { pm.test('Success is true', () => { pm.expect(res.json().success).to.be.true; }); });
D. pm.sendRequest({url: 'https://api.example.com/save', method: 'POST', body: {mode: 'formdata', formdata: {data: 123}}}, function (err, res) { pm.test('Success is true', () => { pm.expect(res.json().success).to.be.true; }); });

Solution

  1. Step 1: Check request format for JSON POST

    The correct script sets Content-Type header to application/json and sends body as raw JSON string.
  2. Step 2: Verify response test syntax

    The correct script uses res.json() to parse response and checks success field is true with valid assertion.
  3. Step 3: Compare other options

    The incorrect options use wrong argument formats, miss headers, or send formdata instead of raw JSON.
  4. Final Answer:

    pm.sendRequest({url: 'https://api.example.com/save', method: 'POST', header: {'Content-Type': 'application/json'}, body: {mode: 'raw', raw: JSON.stringify({data: 123})}}, function (err, res) { pm.test('Success is true', () => { pm.expect(res.json().success).to.be.true; }); }); -> Option C
  5. Quick Check:

    JSON POST: header + raw body + res.json().success [OK]
Hint: Set JSON header and use res.json() to test response [OK]
Common Mistakes:
  • Omitting Content-Type header for JSON
  • Sending body as plain object without raw string
  • Using wrong argument order in sendRequest
  • Testing response without parsing JSON
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