The rq.iterationData object provides access to data from CSV or JSON files when running collections with the Collection Runner. Each iteration of the collection run receives a different row (CSV) or object (JSON) from the data file, allowing you to parameterize your requests dynamically.
This feature is only available when running collections with a data file attached. For single request executions or collection runs without data files, rq.iterationData will be empty.
Methods
rq.iterationData.get(key)
Retrieves the value for a specific key from the current iteration’s data.
Parameters:
key (string): The name of the variable/column to retrieve
Returns: The value associated with the key, or undefined if the key doesn’t exist
Example:
// For a CSV with columns: city, temperature
const city = rq.iterationData.get("city");
const temp = rq.iterationData.get("temperature");
console.log(`Weather in ${city}: ${temp}°C`);
// Output: Weather in Vancouver: 10°C
rq.iterationData.has(key)
Checks if a specific key exists in the current iteration’s data.
Parameters:
key (string): The name of the variable/column to check
Returns: true if the key exists, false otherwise
Example:
if (rq.iterationData.has("userId")) {
const userId = rq.iterationData.get("userId");
console.log("User ID:", userId);
} else {
console.log("No user ID in this iteration");
}
rq.iterationData.toObject()
Returns all data from the current iteration as a JavaScript object.
Returns: An object containing all key-value pairs from the current iteration
Example:
const allData = rq.iterationData.toObject();
console.log("Current iteration data:", allData);
// Output: Current iteration data: { city: "Vancouver", temperature: 10 }
Use Cases
Using Data File Values in Requests
// Pre-request script
// Assuming CSV has columns: username, password
const username = rq.iterationData.get("username");
const password = rq.iterationData.get("password");
// Set as environment variables to use in request
rq.environment.set("currentUser", username);
rq.environment.set("currentPassword", password);
Then in your request body:
{
"username": "{{currentUser}}",
"password": "{{currentPassword}}"
}
Conditional Logic Based on Data
// Pre-request script
const userType = rq.iterationData.get("userType");
if (userType === "admin") {
rq.request.headers.push({
key: "X-Admin-Token",
value: "admin-secret-token"
});
} else {
rq.request.headers.push({
key: "X-User-Token",
value: "user-token"
});
}
Validating Response Against Expected Data
// Post-response script
const expectedStatus = rq.iterationData.get("expectedStatus");
const actualStatus = rq.response.code;
rq.test(`Status code matches expected (${expectedStatus})`, function() {
rq.expect(actualStatus).to.equal(parseInt(expectedStatus));
});
Collecting Results from Multiple Iterations
// Post-response script
const results = rq.collectionVariables.get("results") || [];
const currentData = rq.iterationData.toObject();
results.push({
iteration: rq.info.iteration,
input: currentData,
output: rq.response.json(),
status: rq.response.code
});
rq.collectionVariables.set("results", results);
// On last iteration, log all results
if (rq.info.iteration === rq.info.iterationCount - 1) {
console.log("All results:", JSON.stringify(results, null, 2));
}
Dynamic URL Construction
// Pre-request script
const endpoint = rq.iterationData.get("endpoint");
const id = rq.iterationData.get("id");
// Modify the request URL
rq.request.url = `https://api.example.com/${endpoint}/${id}`;
city,temperature,humidity
Vancouver,10,75
Austin,24,60
London,12,80
Accessing in script:
const city = rq.iterationData.get("city"); // "Vancouver"
const temp = rq.iterationData.get("temperature"); // 10
const humidity = rq.iterationData.get("humidity"); // 75
[
{ "city": "Vancouver", "temperature": 10, "humidity": 75 },
{ "city": "Austin", "temperature": 24, "humidity": 60 },
{ "city": "London", "temperature": 12, "humidity": 80 }
]
Accessing in script:
const city = rq.iterationData.get("city"); // "Vancouver"
const temp = rq.iterationData.get("temperature"); // 10
const humidity = rq.iterationData.get("humidity"); // 75
Notes
rq.iterationData is read-only and cannot be modified
- Data is automatically loaded from the attached CSV or JSON file
- Each iteration receives a different row/object from the data file
- For single request executions,
rq.iterationData will be empty
- Values are automatically type-converted (numbers remain numbers, strings remain strings)
- Missing keys return
undefined when accessed with get()