Skip to content

How To Use If Condition In Postman

API Testing Blog

Mastering If Conditions in Postman for Powerful API Testing

Postman’s powerful scripting capabilities extend beyond simple requests and responses. One of the most useful aspects is its ability to use if conditions to create dynamic tests and validations tailored to specific responses. This guide will explore how to effectively leverage if conditions in your Postman workflows.

1. Basic if Condition Structure in Postman Tests

The basic syntax for an if condition in Postman tests closely resembles JavaScript:

pm.test("Status code is 200", () => {
if (pm.response.code === 200) {
pm.expect(pm.response.json().message).to.be.equal("Success");
}
});

Explanation:

  • pm.test("Test description", () => { ... });: This defines a test with a descriptive name.
  • if (pm.response.code === 200) { ... };: The if statement checks if the response code is 200.
  • pm.expect(pm.response.json().message).to.be.equal("Success");: This assertion uses Chai’s expect to verify the message in the response body.

2. Using else for Conditional Logic

You can extend the if statement with an else block to execute a different set of actions when the initial condition is false.

pm.test("Status code is 200 or 404", () => {
if (pm.response.code === 200) {
pm.expect(pm.response.json().message).to.be.equal("Success");
} else if (pm.response.code === 404) {
console.log("Resource not found");
} else {
console.log("Unexpected status code: " + pm.response.code);
}
});

Explanation:

  • Multiple else if blocks: You can include multiple else if statements to check for various conditions.
  • Default else block: The final else block acts as a catch-all when none of the previous conditions are met.

3. Working with Data Using if Conditions

if conditions are particularly useful for dynamically testing responses based on specific data within the response body.

Example: Validating User Roles:

pm.test("User has admin role", () => {
const userRole = pm.response.json().role;
if (userRole === "admin") {
pm.expect(pm.response.json().permissions).to.include('create');
} else if (userRole === "user") {
pm.expect(pm.response.json().permissions).to.not.include('create');
} else {
console.log("Invalid user role: " + userRole);
}
});

Explanation:

  • Extracting data: We use pm.response.json().role to extract the user role from the response.
  • Conditional assertions: The if statements check the user role and perform different assertions based on the role.

4. Nested if Statements for Complex Logic

For intricate scenarios where multiple conditions need to be evaluated, you can use nested if statements.

Example: Testing Multiple Response Fields:

pm.test("Validating response data", () => {
const response = pm.response.json();
if (response.status === "success") {
if (response.data.length > 0) {
pm.expect(response.data[0].name).to.be.a('string');
} else {
console.log("Data array is empty.");
}
} else {
console.log("Response status is not success.");
}
});

Explanation:

  • Inner and outer conditions: We first check the overall response status, and if successful, we proceed to validate the data array within the response.

5. Combining if and switch Statements for Cleaner Code

For scenarios with multiple alternative paths, consider using the switch statement along with if conditions, leading to more elegant and readable code.

Example: Testing Different API Endpoints:

pm.test("Endpoint-specific validation", () => {
const endpoint = pm.request.url.path.split('/').pop();
switch (endpoint) {
case 'users':
if (pm.response.code === 200) {
pm.expect(pm.response.json().length).to.be.greaterThan(0);
}
break;
case 'posts':
if (pm.response.code === 200) {
pm.expect(pm.response.json().[0].title).to.be.a('string');
}
break;
default:
console.log("Unrecognized endpoint: " + endpoint);
}
});

Explanation

  • Switch statement: This efficiently handles different endpoints using case blocks.
  • if conditions within case blocks: We can include if conditions within each case for endpoint-specific validations.

6. if Conditions in Pre-request Scripts

if conditions are not limited to tests. They can also be used in Pre-request scripts to modify request parameters based on specific conditions.

Example: Dynamically Choosing a URL Path:

const environment = pm.environment.get("env");
if (environment === "production") {
pm.request.url.path = "/api/v2/users";
} else {
pm.request.url.path = "/api/v1/users";
}

Explanation:

  • Pre-request script: This script runs before each request.
  • Environment variables: We use the environment variable env to determine the API version.
  • Dynamic URL path: The script dynamically sets the request path based on the environment.

Conclusion

Mastering if conditions in Postman empowers you to create dynamic, precise, and powerful API tests tailored to the complexities of your APIs. By understanding how to use if conditions effectively, you can streamline your testing workflow, ensure robust validation, and improve the reliability of your API integrations.

API Testing Blog