Bird
Raised Fist0
Postmantesting~8 mins

JSON body in Postman - Framework Patterns

Choose your learning style10 modes available
Framework Mode - JSON body
Folder Structure
postman-project/
├── collections/
│   └── user-api.postman_collection.json
├── environments/
│   ├── dev.postman_environment.json
│   └── prod.postman_environment.json
├── tests/
│   └── user-api-tests.js
├── scripts/
│   └── pre-request-scripts.js
├── data/
│   └── user-data.json
└── README.md
Test Framework Layers
  • Collections: Group of API requests with JSON bodies defined for POST, PUT, PATCH methods.
  • Environments: Variables for base URLs, tokens, and other environment-specific data.
  • Tests: Scripts that run assertions on API responses to validate JSON body correctness.
  • Pre-request Scripts: Scripts to prepare or modify JSON bodies dynamically before sending requests.
  • Data Files: External JSON files used for data-driven testing of request bodies.
Configuration Patterns
  • Environment Variables: Store base URLs, authentication tokens, and other dynamic values to reuse in JSON bodies.
  • Global Variables: For values shared across collections, like common IDs or keys.
  • Data-driven Testing: Use external JSON files to feed multiple JSON bodies into requests for varied test cases.
  • Pre-request Scripts: Modify or generate JSON body content dynamically based on environment or test data.
Test Reporting and CI/CD Integration
  • Use Postman's built-in test results tab to view pass/fail status of JSON body validations.
  • Integrate with Newman CLI to run collections in CI/CD pipelines and generate JSON or HTML reports.
  • Use reporters like mochawesome or custom reporters with Newman for detailed JSON body test reports.
  • Configure CI tools (GitHub Actions, Jenkins) to run Postman tests automatically on code changes.
Best Practices
  • Keep JSON bodies clean and readable: Use proper indentation and consistent formatting.
  • Use variables for dynamic values: Avoid hardcoding values inside JSON bodies; use environment or global variables.
  • Validate JSON schema: Use JSON schema validation in tests to ensure the body structure is correct.
  • Data-driven tests: Separate test data from requests to easily test multiple scenarios.
  • Use pre-request scripts wisely: Generate or modify JSON bodies dynamically to keep tests flexible.
Self Check

Where in this folder structure would you add a new JSON data file to test different user creation scenarios?

Key Result
Organize Postman tests with collections, environments, scripts, and data files to manage JSON bodies effectively.

Practice

(1/5)
1. What is the correct way to represent a JSON body with a user's name and age in Postman?
easy
A. {"name": "Alice", "age": 30}
B. {name: Alice, age: 30}
C. {'name': 'Alice', 'age': 30}
D. {name = "Alice", age = 30}

Solution

  1. Step 1: Identify JSON syntax rules

    JSON keys and string values must be in double quotes. Numbers do not need quotes.
  2. Step 2: Check each option for correct JSON format

    {"name": "Alice", "age": 30} uses double quotes correctly around keys and string values. The other options use incorrect quotes or syntax.
  3. Final Answer:

    {"name": "Alice", "age": 30} -> Option A
  4. Quick Check:

    JSON keys and strings use double quotes = A [OK]
Hint: Always use double quotes for keys and string values in JSON [OK]
Common Mistakes:
  • Using single quotes instead of double quotes
  • Omitting quotes around keys
  • Using equal signs instead of colons
2. Which of the following is a valid JSON body to send a list of colors in Postman?
easy
A. {"colors": ("red", "green", "blue")}
B. {colors: [red, green, blue]}
C. {"colors": "red", "green", "blue"}
D. {"colors": ["red", "green", "blue"]}

Solution

  1. Step 1: Understand JSON array syntax

    Arrays in JSON are enclosed in square brackets with comma-separated values, strings in double quotes.
  2. Step 2: Validate each option's array format

    {"colors": ["red", "green", "blue"]} correctly uses square brackets and double quotes. The other options are invalid: one uses parentheses, another is missing array brackets, and one lacks quotes around strings and keys.
  3. Final Answer:

    {"colors": ["red", "green", "blue"]} -> Option D
  4. Quick Check:

    Arrays use square brackets and double quotes = B [OK]
Hint: Use square brackets for arrays and double quotes for strings [OK]
Common Mistakes:
  • Using parentheses instead of square brackets
  • Missing quotes around string values
  • Omitting brackets for arrays
3. Given this JSON body sent in Postman:
{
  "user": {
    "id": 101,
    "active": true
  },
  "roles": ["admin", "editor"]
}

What is the value of user.active?
medium
A. null
B. true
C. false
D. "true"

Solution

  1. Step 1: Locate the key user.active in the JSON

    Inside the "user" object, the key "active" has the value true without quotes, meaning boolean true.
  2. Step 2: Understand JSON boolean values

    Boolean true is a literal, not a string. So the value is the boolean true, not the string "true".
  3. Final Answer:

    true -> Option B
  4. Quick Check:

    Boolean true is unquoted true = D [OK]
Hint: Booleans in JSON are unquoted true or false [OK]
Common Mistakes:
  • Confusing boolean true with string "true"
  • Assuming missing keys have null values
  • Misreading nested object structure
4. You wrote this JSON body in Postman:
{
  "product": "Book",
  "price": 12.99,
  "inStock": yes
}

What is the error in this JSON body?
medium
A. "price" should be a string in quotes
B. "inStock" value should be true or false without quotes
C. "inStock" value 'yes' is invalid, should be true or false
D. Missing comma after "price" value

Solution

  1. Step 1: Check the value of "inStock" key

    The value 'yes' is not a valid JSON boolean or string because it lacks quotes.
  2. Step 2: Identify correct boolean values in JSON

    JSON booleans are true or false without quotes. Strings must be in double quotes. 'yes' without quotes is invalid.
  3. Final Answer:

    "inStock" value 'yes' is invalid, should be true or false -> Option C
  4. Quick Check:

    Boolean values must be true/false unquoted = C [OK]
Hint: Use true/false for booleans, not yes/no or strings [OK]
Common Mistakes:
  • Using yes/no instead of true/false
  • Not quoting string values
  • Confusing number and string types
5. You want to send this JSON body in Postman to update a user's profile:
{
  "user": {
    "name": "Bob",
    "email": "bob@example.com",
    "preferences": {
      "notifications": false,
      "themes": ["dark", "blue"]
    }
  }
}

Which of the following changes will correctly add a new preference "language" set to "en" inside "preferences"?
hard
A. { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"], "language": "en" } } }
B. { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"] }, "language": "en" } }
C. { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"] }, "preferences.language": "en" } }
D. { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"] }, "preferences": { "language": "en" } } }

Solution

  1. Step 1: Understand nested object update in JSON

    To add a new key inside "preferences", it must be inside the existing "preferences" object.
  2. Step 2: Check each option's structure

    { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"], "language": "en" } } } adds "language": "en" inside "preferences" correctly. { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"] }, "language": "en" } } adds "language" outside "preferences". { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"] }, "preferences.language": "en" } } uses invalid key "preferences.language". { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"] }, "preferences": { "language": "en" } } } overwrites "preferences" object, losing existing keys.
  3. Final Answer:

    { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"], "language": "en" } } } -> Option A
  4. Quick Check:

    Nested keys must be inside existing objects = A [OK]
Hint: Add new keys inside existing nested objects, not outside [OK]
Common Mistakes:
  • Adding keys outside nested objects
  • Using dot notation as key name
  • Overwriting entire nested objects accidentally
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