Bird
Raised Fist0
Postmantesting~10 mins

Random data generation in Postman - Test Execution Trace

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Test Overview

This test sends a POST request with randomly generated user data to an API endpoint. It verifies that the response status is 201 Created and that the response body contains the same random name and email sent.

Test Code - Postman
Postman
pm.test("Create user with random data", function () {
    const randomName = pm.variables.replaceIn("{{$randomFullName}}")
    const randomEmail = pm.variables.replaceIn("{{$randomEmail}}")

    const requestBody = {
        name: randomName,
        email: randomEmail
    };

    pm.sendRequest({
        url: pm.environment.get("apiUrl") + "/users",
        method: 'POST',
        header: {
            'Content-Type': 'application/json'
        },
        body: {
            mode: 'raw',
            raw: JSON.stringify(requestBody)
        }
    }, function (err, res) {
        pm.expect(err).to.be.null;
        pm.expect(res).to.have.property('code', 201);
        const jsonData = res.json();
        pm.expect(jsonData).to.have.property('name', randomName);
        pm.expect(jsonData).to.have.property('email', randomEmail);
    });
});
Execution Trace - 6 Steps
StepActionSystem StateAssertionResult
1Test startsPostman test runner is readyPASS
2Generate random full name and email using Postman dynamic variablesRandom values assigned to variables randomName and randomEmailPASS
3Send POST request to API endpoint /users with JSON body containing randomName and randomEmailRequest sent to server with random user dataPASS
4Receive response from serverResponse received with HTTP status code and JSON bodyCheck response status code is 201PASS
5Parse response JSON and verify 'name' and 'email' fields match sent random dataResponse JSON parsed and fields comparedAssert response.name == randomName and response.email == randomEmailPASS
6Test endsTest completed successfullyPASS
Failure Scenario
Failing Condition: API returns status code other than 201 or response body does not contain matching name and email
Execution Trace Quiz - 3 Questions
Test your understanding
What does the test verify after sending the POST request?
AResponse status is 200 and response body is empty
BRequest body contains fixed user data
CResponse status is 201 and response body contains the same random name and email
DResponse status is 404 Not Found
Key Result
Always verify that the response from an API matches the random data sent in the request to ensure the API processes input correctly.

Practice

(1/5)
1. What is the main purpose of using random data generation in Postman tests?
easy
A. To create different test inputs each time to check software behavior
B. To make tests run faster by using fixed data
C. To avoid writing any test scripts
D. To store test results permanently

Solution

  1. Step 1: Understand the role of random data

    Random data generation creates new inputs for each test run to simulate varied user inputs.
  2. Step 2: Identify the benefit in testing

    This helps find bugs that fixed data might miss by testing unexpected or edge cases.
  3. Final Answer:

    To create different test inputs each time to check software behavior -> Option A
  4. Quick Check:

    Random data = varied inputs [OK]
Hint: Random data means new inputs every test run [OK]
Common Mistakes:
  • Thinking random data makes tests faster
  • Believing random data avoids scripting
  • Confusing data storage with data generation
2. Which Postman syntax correctly generates a random integer between 1 and 100?
easy
A. pm.variables.get('randomInt', Math.floor(Math.random() * 100) + 1);
B. var randomInt = Math.floor(Math.random() * 100) + 1;
C. pm.environment.set('randomInt', Math.floor(Math.random() * 100) + 1);
D. pm.randomInt(1, 100);

Solution

  1. Step 1: Identify how to generate random integer in JavaScript

    Math.floor(Math.random() * 100) + 1 generates a number from 1 to 100.
  2. Step 2: Check how to save it in Postman environment

    pm.environment.set('randomInt', value) saves the value for later use in requests.
  3. Final Answer:

    pm.environment.set('randomInt', Math.floor(Math.random() * 100) + 1); -> Option C
  4. Quick Check:

    Use pm.environment.set to save random data [OK]
Hint: Use pm.environment.set to store random values [OK]
Common Mistakes:
  • Using pm.variables.get to set a value
  • Not saving the random value for reuse
  • Using a non-existent pm.randomInt function
3. Given this Postman script snippet, what will be the output stored in the environment variable 'randomName'?
const names = ['Alice', 'Bob', 'Charlie'];
const randomIndex = Math.floor(Math.random() * names.length);
pm.environment.set('randomName', names[randomIndex]);
medium
A. One of "Alice", "Bob", or "Charlie" randomly
B. "Alice" always
C. An error because names.length is undefined
D. A number between 0 and 2

Solution

  1. Step 1: Understand randomIndex calculation

    Math.floor(Math.random() * names.length) gives 0, 1, or 2 randomly.
  2. Step 2: Check what is stored in 'randomName'

    names[randomIndex] picks a random name from the array.
  3. Final Answer:

    One of "Alice", "Bob", or "Charlie" randomly -> Option A
  4. Quick Check:

    Random index picks random name [OK]
Hint: Random index picks from array length [OK]
Common Mistakes:
  • Assuming output is always first element
  • Thinking names.length is undefined
  • Expecting a number instead of a name
4. Identify the error in this Postman pre-request script for generating a random email:
var randomNum = Math.random() * 1000;
pm.environment.set('email', 'user' + randomNum + '@test.com');
medium
A. Variable randomNum is not declared
B. randomNum should be rounded to an integer
C. pm.environment.set is used incorrectly
D. Email string concatenation syntax is wrong

Solution

  1. Step 1: Check randomNum value type

    Math.random() * 1000 produces a decimal number like 123.456.
  2. Step 2: Understand email format requirements

    Email should not contain decimals in username part; it should be an integer.
  3. Final Answer:

    randomNum should be rounded to an integer -> Option B
  4. Quick Check:

    Round random numbers for clean strings [OK]
Hint: Round random numbers before string use [OK]
Common Mistakes:
  • Ignoring decimal values in emails
  • Misusing pm.environment.set syntax
  • Not declaring variables properly
5. You want to generate a random user profile in Postman with a name, age (18-60), and email. Which script correctly generates and saves all three as environment variables?
hard
A. const names = ['Anna', 'Ben', 'Cara']; const age = Math.floor(Math.random() * 43) + 18; const email = `user${age}@mail.com`; pm.environment.set('name', names[age]); pm.environment.set('age', age); pm.environment.set('email', email);
B. const names = ['Anna', 'Ben', 'Cara']; const age = Math.random() * 60; const email = 'user' + age + '@mail.com'; pm.environment.set('name', names[age]); pm.environment.set('age', age); pm.environment.set('email', email);
C. const names = ['Anna', 'Ben', 'Cara']; const age = Math.floor(Math.random() * 43) + 18; const email = 'user' + age + '@mail.com'; pm.environment.set('name', names[age]); pm.environment.set('age', age); pm.environment.set('email', email);
D. const names = ['Anna', 'Ben', 'Cara']; const age = Math.floor(Math.random() * 43) + 18; const email = `user${age}@mail.com`; pm.environment.set('name', names[Math.floor(Math.random() * names.length)]); pm.environment.set('age', age); pm.environment.set('email', email);

Solution

  1. Step 1: Check age generation range

    Math.floor(Math.random() * 43) + 18 correctly generates age between 18 and 60.
  2. Step 2: Verify name selection and email format

    names[Math.floor(Math.random() * names.length)] picks a random name; email uses template string with age.
  3. Step 3: Confirm environment variable setting

    pm.environment.set is used correctly to save all variables.
  4. Final Answer:

    Option D script correctly generates and saves all variables -> Option D
  5. Quick Check:

    Random index + correct age range + pm.environment.set [OK]
Hint: Use Math.floor and correct index for arrays [OK]
Common Mistakes:
  • Using age as array index
  • Not rounding random numbers
  • Incorrect string concatenation