菜单
文档breadcrumb arrow Grafana k6breadcrumb arrow JavaScript API
开源 RSS

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 访问和交互 PageFrame
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 对输入字符串进行哈希。
描述
Hashercrypto.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提供一种内存高效的方式来在测试脚本中处理文件交互。
redisRedis 交互的功能。
streams提供 Streams API 规范的实现,提供支持定义和消费可读流。
timerssetTimeout, 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 服务的连接。
ParamsRPC 请求特定选项。
ResponseRPC 请求返回。
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 的包装器,以简化会话处理
k6chaijsBDD 断言风格
http-instrumentation-pyroscope用于为 pyroscope 发送行李标头的 k6/http 库,以便 pyroscope 读取回
http-instrumentation-tempo用于为 pyroscope 发送跟踪数据的 k6/http 库
utils在日常负载测试中很有用的小型实用函数