Pre-request scripts run before sending a request to set up or change data. This helps tests use fresh or correct information every time.
When you need to create a token or key before calling an API.
When you want to set the current date or time in your request.
When you need to generate random data like user names or IDs.
When you want to update environment variables based on some logic before the request.
When you want to prepare headers or body data dynamically before sending.
Syntax
Postman
pm.environment.set('variable_key', 'value');
// or
pm.variables.set('variable_key', 'value');
// You can also write JavaScript code here to prepare data
Pre-request scripts use JavaScript to prepare or modify data before the request runs.
Use pm.environment.set() to save data in environment variables accessible in requests.
Examples
This sets an environment variable named authToken with a fixed value.
Postman
pm.environment.set('authToken', '12345abcde');
This saves the current time in ISO format to use in the request.
Postman
const timestamp = new Date().toISOString();
pm.environment.set('currentTime', timestamp);
This generates a random number and saves it as a variable for dynamic use.
This pre-request script creates a random token and saves it as authToken. The test checks that the token exists and is a string longer than 5 characters.
Pre-request scripts help keep your tests flexible and up-to-date by preparing data just before sending requests.
Always check that variables set in pre-request scripts are correctly used in your requests and tests.
Summary
Pre-request scripts run before requests to prepare or update data.
They use JavaScript to set variables like tokens, timestamps, or random values.
This makes tests more reliable and dynamic.
Practice
(1/5)
1. Why do pre-request scripts run before sending a request in Postman?
easy
A. To display the test results
B. To check the response status code
C. To prepare or update data needed for the request
D. To log the response time
Solution
Step 1: Understand the role of pre-request scripts
Pre-request scripts run before the request is sent to prepare or update any data needed for the request.
Step 2: Differentiate from other script types
Scripts that check response status or display results run after the request, not before.
Final Answer:
To prepare or update data needed for the request -> Option C
Quick Check:
Pre-request scripts prepare data = C [OK]
Hint: Pre-request scripts run before requests to set data [OK]
Common Mistakes:
Confusing pre-request scripts with test scripts
Thinking pre-request scripts check responses
Assuming pre-request scripts run after requests
2. Which of the following is the correct way to set a variable named token in a pre-request script?
easy
A. pm.variables.set('token', 'abc123');
B. pm.environment.get('token', 'abc123');
C. pm.variables.get('token', 'abc123');
D. pm.environment.delete('token', 'abc123');
Solution
Step 1: Identify the correct method to set a variable
In Postman scripts, pm.variables.set or pm.environment.set is used to set variables. Here, pm.variables.set('token', 'abc123'); correctly sets the variable.
Step 2: Understand other methods
pm.environment.get and pm.variables.get retrieve variables, not set them. pm.environment.delete removes variables.
Final Answer:
pm.variables.set('token', 'abc123'); -> Option A
Quick Check:
Set variable uses .set() method = B [OK]
Hint: Use .set() to assign variables in pre-request scripts [OK]
Common Mistakes:
Using .get() instead of .set() to assign variables
Confusing environment and variables methods
Trying to delete variables when setting them
3. What will be the value of the variable timestamp after running this pre-request script?
const now = new Date().getTime();
pm.variables.set('timestamp', now);
medium
A. A number representing milliseconds since Jan 1, 1970
B. An error because pm.variables.set is incorrect
C. Undefined because now is not set
D. A string representing the current date
Solution
Step 1: Understand new Date().getTime()
This returns the current time in milliseconds since January 1, 1970 (Unix epoch) as a number.
Step 2: Check variable assignment
The script sets the variable timestamp to this number using pm.variables.set, which is correct syntax.
Final Answer:
A number representing milliseconds since Jan 1, 1970 -> Option A
Quick Check:
getTime() returns milliseconds number = D [OK]
Hint: getTime() returns milliseconds number, not string [OK]
Common Mistakes:
Thinking getTime() returns a date string
Assuming variable is undefined
Confusing set() method usage
4. Identify the error in this pre-request script:
pm.environment.set('authToken', getToken());
function getToken() {
return getToken();
}
medium
A. The function getToken is missing parentheses
B. pm.environment.set is not a valid method
C. Variables cannot be set in pre-request scripts
D. The function getToken causes infinite recursion
Solution
Step 1: Analyze the function call
The script calls getToken() inside pm.environment.set('authToken', getToken()). The function getToken() returns getToken(), which calls itself again.
Step 2: Identify recursion problem
This causes infinite recursion because getToken() calls itself directly, leading to a stack overflow.
Final Answer:
The function getToken causes infinite recursion -> Option D
Quick Check:
Function calls itself recursively = infinite recursion [OK]
Hint: Avoid recursive functions in pre-request scripts [OK]
Common Mistakes:
Thinking pm.environment.set is invalid
Missing that getToken calls itself recursively
Assuming variables can't be set in pre-request scripts
5. You want to generate a random user ID before each request and store it in an environment variable userId. Which pre-request script correctly achieves this?
hard
A. const id = Math.random() * 1000;
pm.environment.get('userId', id);
B. const id = Math.floor(Math.random() * 1000);
pm.environment.set('userId', id);
C. pm.environment.set('userId', Math.random());
D. const id = Math.floor(Math.random() * 1000);
pm.environment.delete('userId');
Solution
Step 1: Generate a random integer ID
Math.floor(Math.random() * 1000) generates a random whole number between 0 and 999, suitable for a user ID.
Step 2: Correctly set the environment variable
pm.environment.set('userId', id); correctly stores the generated ID in the environment variable userId.
Final Answer:
const id = Math.floor(Math.random() * 1000);
pm.environment.set('userId', id); -> Option B
Quick Check:
Use Math.floor and .set() to store random ID = A [OK]
Hint: Use Math.floor and pm.environment.set to save random IDs [OK]
Common Mistakes:
Using .get() instead of .set() to store variables
Not rounding random numbers to integers
Deleting variables instead of setting them
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.