Menu
Choose a product
Viewing: v1.7.x (latest)
Find another version
Scroll for more
Open source
open( filePath, [mode] )
Opens a file, reading all its contents into memory for use in the script.
Caution
open()can only be called from the init context. This restriction is necessary to determine the local files needed to bundle when distributing the test across multiple nodes.
Note
open()often consumes a large amount of memory because every VU keeps a separate copy of the file in memory.To reduce the memory consumption, you can:
- Use
open()within a SharedArray, which shares the allocated file memory between VUs.- Use open() from the
k6/experimental/fsmodule. It provides a memory-efficient way to handle file interactions in your test script and can read files in small chunks.
| Parameter | Type | Description |
|---|---|---|
| filePath | string | The path to the file, absolute or relative, that will be read into memory. The file will only be loaded once, even when running with several VUs. |
| mode | string | By default, the contents of the file are read as text, but if you specify b, the file will be read as binary data instead. |
Returns
| Type | Description |
|---|---|
| string / ArrayBuffer | The contents of the file, returned as string or ArrayBuffer (if b was specified as the mode). |
Examples
JSON
JSON
[
{
"username": "user1",
"password": "password1"
},
{
"username": "user2",
"password": "password2"
},
{
"username": "user3",
"password": "password3"
}
]JavaScript
JavaScript
import { SharedArray } from 'k6/data';
import { sleep } from 'k6';
const data = new SharedArray('users', function () {
// here you can open files, and then do additional processing or generate the array with data dynamically
const f = JSON.parse(open('./users.json'));
return f; // f must be an array[]
});
export default () => {
const randomUser = data[Math.floor(Math.random() * data.length)];
console.log(`${randomUser.username}, ${randomUser.password}`);
sleep(3);
};JavaScript
JavaScript
import { sleep } from 'k6';
const users = JSON.parse(open('./users.json')); // consider using SharedArray for large files
export default function () {
const user = users[__VU - 1];
console.log(`${user.username}, ${user.password}`);
sleep(3);
}JavaScript
JavaScript
import http from 'k6/http';
import { sleep } from 'k6';
const binFile = open('/path/to/file.bin', 'b');
export default function () {
const data = {
field: 'this is a standard form field',
file: http.file(binFile, 'test.bin'),
};
const res = http.post('https://example.com/upload', data);
sleep(3);
}Was this page helpful?
Related resources from Grafana Labs
Additional helpful documentation, links, and articles:
Video

Performance testing and observability in Grafana Cloud
Optimize user experiences with Grafana Cloud. Learn real-time insights, performance testing with k6, and continuous validation with Synthetic Monitoring.
Events

User-centered observability: load testing, real user monitoring, and synthetics
Learn how to use load testing, synthetic monitoring, and real user monitoring (RUM) to understand end users' experience of your apps. Watch on demand.