JavaScript API
k6 脚本中本地支持的模块列表。
初始化上下文
在 k6 开始测试逻辑之前,初始化上下文 中的代码会准备脚本。一些函数仅在初始化上下文中可用。有关运行时的详细信息,请参阅 测试生命周期。
函数 | 描述 |
---|---|
open( filePath, [mode] ) | 打开文件并将所有内容读入内存。 |
import.meta
import.meta
仅在 ECMAScript 模块中可用,而不在 CommonJS 模块中可用。
函数 | 描述 |
---|---|
import.meta.resolve | 以 ESM 导入的方式解析 URL 到路径 |
k6
k6
模块包含 k6 特有的功能。
函数 | 描述 |
---|---|
check(val, sets, [tags]) | 对一个值运行一个或多个检查,并生成通过/失败结果,但在失败时不会引发错误或以其他方式中断执行。 |
fail([err]) | 引发错误,失败并立即中止当前 VU 脚本迭代。 |
group(name, fn) | 在组内运行代码。用于在测试中组织结果。 |
randomSeed(int) | 设置种子以使用 Math.random 获取可重复的伪随机数。 |
sleep(t) | 挂起 VU 执行指定持续时间。 |
k6/browser
k6/browser
模块提供浏览器级 API 来与浏览器交互并收集前端性能指标作为 k6 测试的一部分。
方法 | 描述 |
---|---|
browser.closeContext() | 关闭当前 浏览器上下文。 |
browser.context() | 返回当前 浏览器上下文。 |
browser.isConnected | 指示 CDP 连接到浏览器进程是否处于活动状态。 |
browser.newContext([options]) | 创建一个新的 浏览器上下文 并返回该上下文。 |
browser.newPage([options]) | 在新的 浏览器上下文 中创建一个新的 页面,并返回该页面。已打开的页面应使用 Page.close 关闭。如果页面保持打开状态,可能会扭曲 Web Vital 指标的结果。 |
browser.version() | 返回浏览器应用程序的版本。 |
k6 类 | 描述 |
---|---|
浏览器上下文 | 启用独立浏览器会话,具有单独的 页面、缓存和 cookie。 |
ElementHandle | 表示页面中的 DOM 元素。 |
Frame | 访问和交互 Page 的 Frame 。 |
JSHandle | 表示页面中的 JavaScript 对象。 |
Keyboard | 用于模拟与关联的 Page 的键盘交互。 |
Locator | 定位器 API 简化了与动态变化的元素的交互。 |
Mouse | 用于模拟与关联的 Page 的鼠标交互。 |
Page | 提供与浏览器中的单个选项卡交互的方法。 |
Request | 用于跟踪 Page 发出的请求。 |
Response | 表示 Page 收到的响应。 |
Touchscreen | 用于模拟与关联的 Page 的触摸交互。 |
Worker | 表示 WebWorker。 |
k6/crypto
k6/crypto
模块提供了在 GoLang crypto 包中可用的常见哈希功能。
函数 | 描述 |
---|---|
createHash(algorithm) | 创建一个哈希器对象,允许用户多次向哈希添加数据,并在过程中提取哈希摘要。 |
createHMAC(algorithm, secret) | 创建一个 HMAC 哈希对象,允许用户多次向哈希添加数据,并在过程中提取哈希摘要。 |
hmac(algorithm, secret, data, outputEncoding) | 使用 HMAC 对输入字符串进行签名。 |
md4(input, outputEncoding) | 使用 MD4 对输入字符串进行哈希。 |
md5(input, outputEncoding) | 使用 MD5 对输入字符串进行哈希。 |
randomBytes(int) | 返回包含多个加密随机字节的数组。 |
ripemd160(input, outputEncoding) | 使用 RIPEMD-160 对输入字符串进行哈希。 |
sha1(input, outputEncoding) | 使用 SHA-1 对输入字符串进行哈希。 |
sha256(input, outputEncoding) | 使用 SHA-256 对输入字符串进行哈希。 |
sha384(input, outputEncoding) | 使用 SHA-384 对输入字符串进行哈希。 |
sha512(input, outputEncoding) | 使用 SHA-512 对输入字符串进行哈希。 |
sha512_224(input, outputEncoding) | 使用 SHA-512/224 对输入字符串进行哈希。 |
sha512_256(input, outputEncoding) | 使用 SHA-512/256 对输入字符串进行哈希。 |
类 | 描述 |
---|---|
Hasher | 由 crypto.createHash() 返回的对象。它允许向哈希添加更多数据,并在过程中提取摘要。 |
k6/data
k6/data
模块提供用于处理数据的助手。
类/方法 | 描述 |
---|---|
SharedArray | 只读数组类似结构,在 VU 之间共享内存 |
k6/encoding
k6/encoding
模块提供 base64 编码/解码,如 RFC4648 中定义。
函数 | 描述 |
---|---|
b64decode(input, [encoding], [format]) | 对字符串进行 Base64 解码。 |
b64encode(input, [encoding]) | 对字符串进行 Base64 编码。 |
k6/execution
k6/execution
模块提供获取当前测试执行状态的信息的能力,在测试脚本中。您可以在脚本中读取测试执行期间的执行状态,并根据当前状态更改脚本逻辑。
k6/execution
提供以下属性的测试执行信息
k6/experimental
k6/experimental
模块 是稳定模块,可能会引入破坏性更改。一旦它们完全稳定,它们可能会升级为 k6 核心模块。
模块 | 描述 |
---|---|
fs | 提供一种内存高效的方式来在测试脚本中处理文件交互。 |
redis | 与 Redis 交互的功能。 |
streams | 提供 Streams API 规范的实现,提供支持定义和消费可读流。 |
timers | setTimeout , clearTimeout , setInterval , clearInterval |
tracing | 支持用跟踪信息来记录 HTTP 请求。 |
webcrypto | 实现 WebCrypto API。 |
websockets | 实现浏览器的 WebSocket API。 |
k6/html
k6/html
模块包含 HTML 解析功能。
函数 | 描述 |
---|---|
parseHTML(src) | 解析 HTML 字符串并填充 Selection 对象。 |
类 | 描述 |
---|---|
Element | 由 选择 API 返回的 HTML DOM 元素。 |
Selection | 一个类似 jQuery 的 API 用于访问 HTML DOM 元素。 |
k6/http
`k6/http` 模块 包含执行 HTTP 事务的功能。
函数 | 描述 |
---|---|
batch( requests ) | 并行发出多个 HTTP 请求(例如浏览器通常会这样做)。 |
cookieJar() | 获取活动的 HTTP Cookie jar。 |
del( url, [body], [params] ) | 发出 HTTP DELETE 请求。 |
file( data, [filename], [contentType] ) | 创建一个文件对象,用于构建多部分请求。 |
get( url, [params] ) | 发出 HTTP GET 请求。 |
head( url, [params] ) | 发出 HTTP HEAD 请求。 |
options( url, [body], [params] ) | 发出 HTTP OPTIONS 请求。 |
patch( url, [body], [params] ) | 发出 HTTP PATCH 请求。 |
post( url, [body], [params] ) | 发出 HTTP POST 请求。 |
put( url, [body], [params] ) | 发出 HTTP PUT 请求。 |
request( method, url, [body], [params] ) | 发出任何类型的 HTTP 请求。 |
asyncRequest( method, url, [body], [params] ) | 异步发出任何类型的 HTTP 请求。 |
setResponseCallback(expectedStatuses) | 设置响应回调以标记预期响应。 |
url`url` | 创建一个带有名称标签的 URL。阅读更多关于 URL 分组。 |
expectedStatuses( statusCodes ) | 为 setResponseCallback 创建一个检查状态码的回调。 |
类 | 描述 |
---|---|
CookieJar | 用于存储 cookie,由服务器设置或客户端添加。 |
FileData | 用于在执行多部分请求(文件上传)时包装表示文件的數據。 |
Params | 用于设置各种 HTTP 请求特定参数,例如标头、cookie 等。 |
Response | 由生成 HTTP 请求的 http.* 方法返回。 |
k6/metrics
`k6/metrics` 模块 提供了创建各种类型的 自定义指标 的功能。
指标类型 | 描述 |
---|---|
Counter | 累积地汇总添加值的指标。 |
Gauge | 存储添加到它的最小值、最大值和最后一个值的指标。 |
Rate | 跟踪添加到它的值的百分比是非零的指标。 |
Trend | 计算添加到值的统计数据(最小值、最大值、平均值和百分位数)的指标。 |
k6/net/grpc
`k6/net/grpc` 模块 提供了一个 gRPC 客户端,用于在 HTTP/2 上进行远程过程调用 (RPC)。
类/方法 | 描述 |
---|---|
Client | 用于向 gRPC 服务器发出 RPC 调用 gRPC 客户端。 |
Client.load(importPaths, …protoFiles) | 加载并解析给定的协议缓冲区定义,以便为 RPC 请求提供可用性。 |
Client.connect(address [,params]) | 连接到给定的 gRPC 服务。 |
Client.invoke(url, request [,params]) | 为给定的服务/方法发出一个单向 RPC,并返回一个 响应。 |
Client.asyncInvoke(url, request [,params]) | 异步地为给定的服务/方法发出一个单向 RPC,并返回一个带有 响应 的 Promise。 |
Client.close() | 关闭到 gRPC 服务的连接。 |
Params | RPC 请求特定选项。 |
Response | RPC 请求返回。 |
Constants | 定义常量来区分 gRPC 响应 状态。 |
Stream(client, url, [,params]) | 创建一个新的 gRPC 流。 |
Stream.on(event, handler) | 向可能的流事件之一添加一个新的侦听器。 |
Stream.write(message) | 将消息写入流。 |
Stream.end() | 指示服务器客户端已完成发送。 |
k6/ws
`k6/ws` 模块 提供了一个 WebSocket 客户端,实现了 WebSocket 协议。
函数 | 描述 |
---|---|
connect( url, params, callback ) | 创建 WebSocket 连接,并提供一个 Socket 客户端来与服务交互。该方法会阻塞测试最终化,直到连接关闭。 |
类/方法 | 描述 |
---|---|
Params | 用于设置各种 WebSocket 连接参数,例如标头、cookie jar、压缩等。 |
Socket | 用于与 WS 连接交互的 WebSocket 客户端。 |
Socket.close() | 关闭 WebSocket 连接。 |
Socket.on(event, callback) | 在连接上设置事件监听器以接收以下任何事件 - open - binaryMessage - message - ping - pong - close - error. |
Socket.ping() | 发送 ping。 |
Socket.send(data) | 发送字符串数据。 |
Socket.sendBinary(data) | 发送二进制数据。 |
Socket.setInterval(callback, interval) | 在连接处于打开状态时,以一定间隔重复调用函数。 |
Socket.setTimeout(callback, period) | 如果连接处于打开状态,则延迟调用函数。 |
错误代码
当前定义了以下特定错误代码
- 1000: 一般的错误,不是下面列出的任何错误。
- 1010: 非 TCP 网络错误 - 这是一个占位符,目前没有已知错误会触发它。
- 1020: 指定了无效的 URL。
- 1050: HTTP 请求超时。
- 1100: 一般的 DNS 错误,不是下面列出的任何错误。
- 1101: 未找到提供的主机 IP。
- 1110: 已解析黑名单 IP 或尝试建立到此 IP 的连接。
- 1111: 使用 阻止主机名 选项列出的黑名单主机名。
- 1200: 一般的 TCP 错误,不是下面列出的任何错误。
- 1201: 写入时“断管” - 另一端可能已关闭连接。
- 1202: 未知的 TCP 错误 - 我们遇到一个我们不认识的错误,但它来自操作系统,并且在其上设置了 `errno`。`error` 中的消息包含操作(写入、读取)、errno、操作系统和错误的原始消息。
- 1210: 一般 TCP 拨号错误。
- 1211: 拨号超时错误 - 达到拨号超时。
- 1212: 拨号连接被拒绝 - 拨号时另一方拒绝连接。
- 1213: 拨号未知错误。
- 1220: 对等方重置 - 连接被另一方重置,可能是服务器。
- 1300: 一般 TLS 错误
- 1310: 未知权威 - 证书颁发机构未知。
- 1311: 证书与主机名不匹配。
- 1400 到 1499: 对应于 HTTP 4xx 客户端错误 的错误代码。
- 1500 到 1599: 对应于 HTTP 5xx 服务器错误 的错误代码。
- 1600: 一般的 HTTP/2 错误,不是下面列出的任何错误。
- 1610: 一般 HTTP/2 GoAway 错误。
- 1611 到 1629: HTTP/2 GoAway 错误,其中特定 HTTP/2 错误代码 的值加到 1611。
- 1630: 一般 HTTP/2 流错误。
- 1631 到 1649: HTTP/2 流错误,其中特定 HTTP/2 错误代码 的值加到 1631。
- 1650: 一般 HTTP/2 连接错误。
- 1651 到 1669: HTTP/2 连接错误,其中特定 HTTP/2 错误代码 的值加到 1651。
- 1701: 解压缩错误。
阅读更多关于 错误代码。
jslib
jslib 是 k6 团队维护的 JavaScript 库集合,可在 k6 脚本中使用。
库 | 描述 |
---|---|
aws | 允许与 Amazon AWS 服务交互的库 |
httpx | 围绕 k6/http 的包装器,以简化会话处理 |
k6chaijs | BDD 断言风格 |
http-instrumentation-pyroscope | 用于为 pyroscope 发送行李标头的 k6/http 库,以便 pyroscope 读取回 |
http-instrumentation-tempo | 用于为 pyroscope 发送跟踪数据的 k6/http 库 |
utils | 在日常负载测试中很有用的小型实用函数 |