Bird
Raised Fist0
Postmantesting~5 mins

Body validation before sending in Postman

Choose your learning style10 modes available
Introduction

We check the request body before sending it to make sure it has the right data. This helps avoid errors and saves time.

When sending data to create a new user, check the body has all required fields.
Before updating a product, verify the body contains valid price and name.
When testing an API, ensure the body format matches what the server expects.
Before sending sensitive data, confirm the body does not have empty or wrong values.
Syntax
Postman
pm.test("Body has required fields", function () {
    let jsonData = pm.request.body && pm.request.body.raw ? JSON.parse(pm.request.body.raw) : {};
    pm.expect(jsonData).to.have.property('name');
    pm.expect(jsonData).to.have.property('email');
});

Use pm.request.body.raw to access the raw JSON body before sending.

Use pm.expect assertions to check if required fields exist.

Examples
This test checks if the body has both 'username' and 'password' fields before sending.
Postman
pm.test("Body contains 'username' and 'password'", function () {
    let body = JSON.parse(pm.request.body.raw);
    pm.expect(body).to.have.property('username');
    pm.expect(body).to.have.property('password');
});
This test ensures the 'age' field in the body is a number.
Postman
pm.test("Body 'age' is a number", function () {
    let body = JSON.parse(pm.request.body.raw);
    pm.expect(body.age).to.be.a('number');
});
This test confirms the body is not empty before sending.
Postman
pm.test("Body is not empty", function () {
    pm.expect(pm.request.body.raw).to.not.be.empty;
});
Sample Program

This Postman test script checks that the request body is not empty and contains 'title' and 'description' fields as strings before sending the request.

Postman
pm.test("Validate request body before sending", function () {
    let bodyText = pm.request.body.raw;
    pm.expect(bodyText).to.not.be.empty;
    let body = JSON.parse(bodyText);
    pm.expect(body).to.have.property('title');
    pm.expect(body).to.have.property('description');
    pm.expect(body.title).to.be.a('string');
    pm.expect(body.description).to.be.a('string');
});
OutputSuccess
Important Notes

Always parse the raw body safely to avoid errors if the body is empty or not JSON.

Use clear and simple assertions to catch missing or wrong data early.

Running these tests before sending helps prevent server errors and saves debugging time.

Summary

Check the request body before sending to avoid errors.

Use Postman tests with pm.request.body.raw and pm.expect to validate data.

Validate required fields and data types to ensure correct requests.

Practice

(1/5)
1. What is the main reason to validate the request body in Postman before sending it?
easy
A. To automatically generate response data
B. To ensure the data format and required fields are correct
C. To speed up the request sending process
D. To change the HTTP method of the request

Solution

  1. Step 1: Understand the purpose of body validation

    Validating the request body helps catch errors like missing fields or wrong data types before sending.
  2. Step 2: Identify the correct reason

    Ensuring data format and required fields are correct prevents server errors and improves test reliability.
  3. Final Answer:

    To ensure the data format and required fields are correct -> Option B
  4. Quick Check:

    Body validation = correct data format [OK]
Hint: Validate body to avoid sending bad data [OK]
Common Mistakes:
  • Thinking validation speeds up sending
  • Confusing validation with response generation
  • Assuming validation changes HTTP method
2. Which Postman script snippet correctly checks if the raw request body contains a JSON field named username before sending?
easy
A. pm.expect(pm.response.body).to.have.property('username');
B. pm.request.body.raw.includes('username');
C. pm.expect(pm.request.body.raw).to.include('username');
D. pm.request.body.json().has('username');

Solution

  1. Step 1: Identify correct method to check raw body content

    pm.request.body.raw returns the raw string body; using pm.expect(...).to.include('username') checks if 'username' text exists.
  2. Step 2: Eliminate incorrect options

    pm.request.body.raw.includes('username'); returns boolean but no assertion; pm.expect(pm.response.body).to.have.property('username'); checks response, not request; pm.request.body.json().has('username'); uses invalid method.
  3. Final Answer:

    pm.expect(pm.request.body.raw).to.include('username'); -> Option C
  4. Quick Check:

    Use pm.expect with raw body to check text [OK]
Hint: Use pm.expect with raw body string to check fields [OK]
Common Mistakes:
  • Checking response instead of request body
  • Using non-existent methods on pm.request.body
  • Not using pm.expect for assertions
3. Given this Postman pre-request script snippet:
const body = JSON.parse(pm.request.body.raw);
pm.expect(body.age).to.be.a('number');
What will happen if the request body is {"age": "twenty"}?
medium
A. The test will fail because age is a string, not a number
B. The test will pass because 'twenty' is a valid value
C. The script will throw a syntax error
D. The test will be skipped automatically

Solution

  1. Step 1: Parse the request body and check type

    The script parses the JSON body and asserts that body.age is a number.
  2. Step 2: Analyze the given body value

    Since age is the string "twenty", the assertion to be.a('number') fails.
  3. Final Answer:

    The test will fail because age is a string, not a number -> Option A
  4. Quick Check:

    Type check fails if data type mismatches [OK]
Hint: Check data types carefully in JSON body [OK]
Common Mistakes:
  • Assuming string 'twenty' counts as number
  • Expecting syntax error on valid JSON
  • Thinking test skips on failure
4. You wrote this Postman pre-request test to check if the request body has a non-empty email field:
const body = JSON.parse(pm.request.body.raw);
pm.expect(body.email).to.not.be.empty;
But the test always passes even when email is missing. What is the likely problem?
medium
A. The raw body is not accessible in pre-request scripts
B. pm.expect cannot check empty strings
C. JSON.parse fails silently on missing fields
D. The test does not check if email exists before checking emptiness

Solution

  1. Step 1: Understand the test logic

    The test checks if body.email is not empty, but if email is undefined, the assertion does not fail as expected.
  2. Step 2: Identify missing existence check

    Without checking if email exists, the test passes because undefined is not considered empty string.
  3. Final Answer:

    The test does not check if email exists before checking emptiness -> Option D
  4. Quick Check:

    Check existence before emptiness to avoid false passes [OK]
Hint: Check field exists before checking empty [OK]
Common Mistakes:
  • Assuming empty check covers missing fields
  • Believing JSON.parse fails silently
  • Thinking raw body is unavailable in pre-request
5. You want to prevent sending a request if the JSON body misses the required field id or if id is not a positive integer. Which Postman pre-request script correctly validates this before sending?
hard
A. const body = JSON.parse(pm.request.body.raw); if (!body.id || typeof body.id !== 'number' || body.id <= 0) { throw new Error('Invalid id'); }
B. const body = JSON.parse(pm.request.body.raw); pm.expect(body.id).to.be.a('number').and.to.be.above(0);
C. const body = pm.request.body.raw; pm.expect(body).to.include('id');
D. const body = JSON.parse(pm.request.body.raw); if (body.id === undefined) { console.log('Missing id'); }

Solution

  1. Step 1: Check for existence and type with condition

    const body = JSON.parse(pm.request.body.raw); if (!body.id || typeof body.id !== 'number' || body.id <= 0) { throw new Error('Invalid id'); } parses the body and uses an if statement to check if id is missing, not a number, or not positive.
  2. Step 2: Prevent sending by throwing error

    Throwing an error in pre-request script stops the request from sending, enforcing validation.
  3. Final Answer:

    const body = JSON.parse(pm.request.body.raw); if (!body.id || typeof body.id !== 'number' || body.id <= 0) { throw new Error('Invalid id'); } -> Option A
  4. Quick Check:

    Throw error to block invalid body before sending [OK]
Hint: Throw error in pre-request to block bad body [OK]
Common Mistakes:
  • Using pm.expect without blocking request
  • Only logging missing fields without stopping
  • Checking raw string instead of parsed 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