Bird
Raised Fist0
Postmantesting~5 mins

Reusable test scripts in Postman

Choose your learning style10 modes available
Introduction

Reusable test scripts save time by letting you write tests once and use them many times. This helps keep your tests organized and easy to update.

When you have common checks like status code or response time for many API requests.
When you want to run the same validation on different endpoints without rewriting code.
When you want to keep your test collection clean and avoid repeating code.
When you need to update a test logic and want the change to apply everywhere automatically.
When you want to share test logic with your team easily.
Syntax
Postman
pm.test("Test name", function () {
    // test code here
});

// To reuse, create a function and call it in tests
function commonTests() {
    pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);
    });
    pm.test("Response time is less than 500ms", function () {
        pm.expect(pm.response.responseTime).to.be.below(500);
    });
}

// Call reusable function in tests
commonTests();

Define reusable functions outside individual tests to call them multiple times.

Use Postman's pm object to access request and response data inside reusable scripts.

Examples
This example defines a simple reusable function to check if the status code is 200, then calls it.
Postman
function checkStatus200() {
    pm.test("Status code is 200", () => {
        pm.response.to.have.status(200);
    });
}

checkStatus200();
This reusable function checks if the response time is below a given limit, making it flexible.
Postman
function checkResponseTime(maxTime) {
    pm.test(`Response time is less than ${maxTime}ms`, () => {
        pm.expect(pm.response.responseTime).to.be.below(maxTime);
    });
}

checkResponseTime(300);
Combines multiple reusable tests into one function for easy reuse.
Postman
function commonTests() {
    checkStatus200();
    checkResponseTime(500);
}

commonTests();
Sample Program

This Postman test script defines two reusable functions and calls them to check the response status and time.

Postman
// Reusable test functions
function checkStatus200() {
    pm.test("Status code is 200", () => {
        pm.response.to.have.status(200);
    });
}

function checkResponseTime(maxTime) {
    pm.test(`Response time is less than ${maxTime}ms`, () => {
        pm.expect(pm.response.responseTime).to.be.below(maxTime);
    });
}

// Use reusable tests in this request
checkStatus200();
checkResponseTime(400);
OutputSuccess
Important Notes

Reusable scripts help keep your tests DRY (Don't Repeat Yourself).

Keep reusable functions simple and focused on one check for easier maintenance.

You can store reusable scripts in Postman's Collection or Environment scripts for sharing.

Summary

Reusable test scripts save time and reduce errors by avoiding repeated code.

Define reusable functions and call them in your tests.

Use Postman's pm API to write flexible and clear reusable tests.

Practice

(1/5)
1. What is the main benefit of using reusable test scripts in Postman?
easy
A. They save time and reduce errors by avoiding repeated code.
B. They make the tests run slower but more secure.
C. They require writing the same code multiple times.
D. They only work with GET requests.

Solution

  1. Step 1: Understand the purpose of reusable scripts

    Reusable test scripts help avoid writing the same code repeatedly, which saves time and reduces mistakes.
  2. Step 2: Identify the correct benefit

    Among the options, only saving time and reducing errors matches the purpose of reusable scripts.
  3. Final Answer:

    They save time and reduce errors by avoiding repeated code. -> Option A
  4. Quick Check:

    Reusable scripts = save time and reduce errors [OK]
Hint: Reusable scripts avoid repeating code, saving time [OK]
Common Mistakes:
  • Thinking reusable scripts slow down tests
  • Believing reusable scripts only work for GET requests
  • Confusing reusable scripts with writing duplicate code
2. Which of the following is the correct way to define a reusable function in a Postman test script?
easy
A. func checkStatus() { pm.test('Status is 200', () => pm.response.to.have.status(200)); }
B. def checkStatus() { pm.test('Status is 200', () => pm.response.to.have.status(200)); }
C. checkStatus() => { pm.test('Status is 200', () => pm.response.to.have.status(200)); }
D. function checkStatus() { pm.test('Status is 200', () => pm.response.to.have.status(200)); }

Solution

  1. Step 1: Recall JavaScript function syntax

    In Postman scripts, JavaScript functions are defined using the keyword function followed by the function name and parentheses.
  2. Step 2: Identify the correct syntax

    function checkStatus() { pm.test('Status is 200', () => pm.response.to.have.status(200)); } uses the correct JavaScript syntax. Options A, B, and C use invalid keywords or syntax not supported in JavaScript.
  3. Final Answer:

    function checkStatus() { pm.test('Status is 200', () => pm.response.to.have.status(200)); } -> Option D
  4. Quick Check:

    JavaScript function syntax = function name() {} [OK]
Hint: Use 'function' keyword to define reusable functions [OK]
Common Mistakes:
  • Using Python or other language syntax like 'def'
  • Using arrow function without assignment
  • Using unsupported keywords like 'func'
3. Given the following Postman test script, what will be the output when the response status is 404?
function checkStatus() {
  pm.test('Status is 200', () => pm.response.to.have.status(200));
}

checkStatus();
medium
A. Test passes because the function runs without error.
B. Test fails because the response status is not 200.
C. Syntax error because function is not called correctly.
D. Test is skipped because status 404 is ignored.

Solution

  1. Step 1: Understand the test logic

    The function checkStatus runs a test that expects the response status to be 200.
  2. Step 2: Analyze the response status

    The actual response status is 404, which does not match 200, so the test will fail.
  3. Final Answer:

    Test fails because the response status is not 200. -> Option B
  4. Quick Check:

    Expected 200, got 404 = test fails [OK]
Hint: Test passes only if response status matches expected [OK]
Common Mistakes:
  • Assuming function call causes syntax error
  • Thinking test passes if function runs
  • Believing 404 status is ignored automatically
4. You wrote this reusable test function in Postman but it does not run as expected:
function checkResponse() {
  pm.test('Response time is less than 200ms', () => {
    pm.expect(pm.response.responseTime).to.be.below(200);
  });
}

checkResponse
What is the error and how to fix it?
medium
A. Missing parentheses when calling the function; add () after checkResponse.
B. Incorrect assertion syntax; replace 'to.be.below' with 'to.be.lessThan'.
C. Function name is invalid; rename to 'check_response'.
D. Response time property is wrong; use 'pm.response.time' instead.

Solution

  1. Step 1: Check function call syntax

    The function checkResponse is defined correctly but called without parentheses, so it does not execute.
  2. Step 2: Fix the function call

    Adding parentheses () after checkResponse calls the function properly and runs the test.
  3. Final Answer:

    Missing parentheses when calling the function; add () after checkResponse. -> Option A
  4. Quick Check:

    Function call needs () to execute [OK]
Hint: Always add () to call functions in JavaScript [OK]
Common Mistakes:
  • Confusing assertion syntax with chai library
  • Changing function names unnecessarily
  • Using wrong response time property
5. You want to reuse a test that checks if a JSON response has a specific key with a non-empty value. Which reusable function correctly implements this in Postman?
hard
A. function checkKeyExists(key) { pm.test(`Response has key ${key}`, () => { pm.expect(pm.response.json()[key]).to.exist; }); }
B. function checkKeyExists(key) { pm.test('Response has key', () => { pm.expect(pm.response.json()).to.include.key(key); }); }
C. function checkKeyExists(key) { pm.test(`Response has key ${key}`, () => { pm.expect(pm.response.json()).to.have.property(key).that.is.not.empty; }); }
D. function checkKeyExists(key) { pm.test(`Response has key ${key}`, () => { pm.expect(pm.response.json()).to.have.key(key).not.empty; }); }

Solution

  1. Step 1: Understand the requirement

    The function must check that the JSON response has the given key and that its value is not empty.
  2. Step 2: Analyze each option

    function checkKeyExists(key) { pm.test(`Response has key ${key}`, () => { pm.expect(pm.response.json()).to.have.property(key).that.is.not.empty; }); } uses correct chai assertions: to.have.property(key).that.is.not.empty which checks key existence and non-empty value.
    function checkKeyExists(key) { pm.test('Response has key', () => { pm.expect(pm.response.json()).to.include.key(key); }); } uses incorrect assertion to.include.key which is invalid.
    function checkKeyExists(key) { pm.test(`Response has key ${key}`, () => { pm.expect(pm.response.json()[key]).to.exist; }); } checks only existence but not if value is non-empty.
    function checkKeyExists(key) { pm.test(`Response has key ${key}`, () => { pm.expect(pm.response.json()).to.have.key(key).not.empty; }); } uses invalid chaining to.have.key(key).not.empty.
  3. Final Answer:

    function checkKeyExists(key) { pm.test(`Response has key ${key}`, () => { pm.expect(pm.response.json()).to.have.property(key).that.is.not.empty; }); } -> Option C
  4. Quick Check:

    Check key exists and not empty = function checkKeyExists(key) { pm.test(`Response has key ${key}`, () => { pm.expect(pm.response.json()).to.have.property(key).that.is.not.empty; }); } [OK]
Hint: Use 'to.have.property(key).that.is.not.empty' for key and value check [OK]
Common Mistakes:
  • Using invalid chai assertion methods
  • Checking only key existence without value
  • Incorrect chaining of assertions
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