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

JavaScript API

k6 脚本中原生支持的 k6 模块列表。

Init 上下文

在 k6 启动测试逻辑之前,_init 上下文_中的代码会准备脚本。一些函数仅在 init 上下文中可用。有关运行时详细信息,请参阅测试生命周期

函数描述
open( filePath, [mode] )打开文件并将所有内容读入内存。

import.meta

import.meta 仅在 ECMAScript 模块中可用,CommonJS 模块中不可用。

函数描述
import.meta.resolve以与 ESM 导入相同的方式解析路径到 URL

k6

k6 模块包含 k6 特定的功能。

函数描述
check(val, sets, [tags])对值运行一个或多个检查,并生成通过/失败结果,但在失败时不会抛出错误或以其他方式中断执行。
fail([err])抛出错误,立即使当前虚拟用户脚本迭代失败并中止。
group(name, fn)在组内运行代码。用于在测试中组织结果。
randomSeed(int)设置种子,以便使用 Math.random 获取可重现的伪随机数。
sleep(t)暂停虚拟用户执行指定的持续时间。

k6/browser

k6/browser 模块提供了浏览器级别的 API,用于与浏览器交互并作为 k6 测试的一部分收集前端性能指标。

方法描述
browser.closeContext()关闭当前的 BrowserContext
browser.context()返回当前的 BrowserContext
browser.isConnected 指示与浏览器进程的 CDP 连接是否处于活动状态。
browser.newContext([options]) 创建并返回新的 BrowserContext
browser.newPage([options]) 在新的 BrowserContext 中创建一个新的 Page 并返回该页面。已打开的页面应该使用 Page.close 关闭。未关闭的页面可能会扭曲 Web Vital 指标的结果。
browser.version()返回浏览器应用程序的版本。
k6 类描述
BrowserContext 启用独立的浏览器会话,具有单独的 Page、缓存和 cookie。
ElementHandle 表示页面中的 DOM 元素。
Frame 访问并与 PageFrame 进行交互。
JSHandle表示页面中的 JavaScript 对象。
Keyboard用于模拟与关联的 Page 的键盘交互。
LocatorLocator API 使得处理动态变化的元素更容易。
Mouse用于模拟与关联的 Page 的鼠标交互。
Page 提供了与浏览器单个标签页交互的方法。
Request 用于跟踪 Page 发起的请求。
Response 表示 Page 收到的响应。
Touchscreen用于模拟与关联的 Page 的触摸交互。
Worker表示一个 WebWorker

k6/crypto

k6/crypto 模块提供了 GoLang crypto 包中可用的常用哈希功能。

函数描述
createHash(algorithm)创建一个 Hasher 对象,允许用户多次添加要哈希的数据,并在过程中提取哈希摘要。
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在虚拟用户之间共享内存的只读数组状结构

k6/encoding

k6/encoding 模块提供了符合 RFC4648 定义的 base64 编码/解码功能。

函数描述
b64decode(input, [encoding], [format])Base64 解码字符串。
b64encode(input, [encoding])Base64 编码字符串。

k6/execution

k6/execution 模块提供了在测试脚本内部获取当前测试执行状态信息的能力。您可以在脚本中读取测试执行期间的执行状态,并根据当前状态更改脚本逻辑。

k6/execution 提供了以下属性的测试执行信息

k6/experimental

k6/experimental 模块是稳定的模块,可能会引入破坏性更改。一旦它们完全稳定,可能会升级为 k6 核心模块。

模块描述
csv提供了高效便捷的 CSV 文件解析支持。
fs提供了一种内存效率高的方式来处理测试脚本中的文件交互。
redisRedis 交互的功能。
streams提供了 Streams API 规范的实现,支持定义和使用可读流。
webcrypto实现了 WebCrypto API
websockets实现了浏览器的 WebSocket API

k6/html

k6/html 模块包含 HTML 解析功能。

函数描述
parseHTML(src)解析 HTML 字符串并填充一个 Selection 对象。
描述
ElementSelection API 返回的 HTML DOM 元素。
Selection用于访问 HTML DOM 元素的类似 jQuery 的 API。

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,这些 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)。

类/方法描述
ClientgRPC 客户端,用于对 gRPC 服务器进行 RPC 调用。
Client.load(importPaths, …protoFiles)加载并解析给定的协议缓冲区定义,使其可用于 RPC 请求。
Client.connect(address [,params])连接到给定的 gRPC 服务。
Client.invoke(url, request [,params])为给定的服务/方法进行一元 RPC 调用,并返回一个 Response
Client.asyncInvoke(url, request [,params])为给定的服务/方法异步进行一元 RPC 调用,并返回一个包含 Response 的 Promise。
Client.close()关闭与 gRPC 服务的连接。
ParamsRPC 请求特定选项。
Response由 RPC 请求返回。
常量定义常量以区分 gRPC 响应状态。
Stream(client, url, [,params])创建一个新的 gRPC 流。
Stream.on(event, handler)向可能的流事件之一添加新的监听器。
Stream.write(message)向流写入消息。
Stream.end()向服务器发出信号,表明客户端已完成发送。
事件处理程序针对 gRPC 流上各种事件调用的函数。
元数据gRPC 流消息的元数据。

k6/secrets

k6/secrets 模块提供对配置的密钥源提供的密钥的访问。

属性描述
get([String])从默认密钥源异步获取密钥
source([String])返回指定名称的源,然后可用于从具体源获取密钥

k6/timers

k6/timers 模块实现了计时器,用于与 k6 的事件循环协同工作。它们模仿了浏览器和其他 JavaScript 运行时中的功能。

函数描述
setTimeout设置一个函数在给定超时后运行。
clearTimeout使用 setTimeout 清除先前设置的超时。
setInterval设置一个函数在给定间隔重复运行。
clearInterval使用 setInterval 清除先前设置的间隔。

注意

计时器方法是全局可用的,因此您可以在脚本中直接使用它们,无需包含 import 语句。

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)如果连接打开,则延迟调用函数。

crypto

crypto 模块提供 WebCrypto API 实现。

类/方法描述
getRandomValues用加密安全的随机值填充传入的 TypedArray
randomUUID返回随机生成的 36 个字符长的 v4 UUID。
subtleSubtleCrypto 接口提供对常见加密原语(例如哈希、签名、加密或解密)的访问。

注意

crypto 对象是全局可用的,因此您可以在脚本中直接使用它,无需包含 import 语句。

错误代码

当前定义了以下特定错误代码

  • 1000:通用错误,不属于下面列出的任何一种。
  • 1010:非 TCP 网络错误 - 这是一个占位符,目前没有已知错误会触发它。
  • 1020:指定了无效 URL。
  • 1050:HTTP 请求已超时。
  • 1100:通用 DNS 错误,不属于下面列出的任何一种。
  • 1101:找不到为提供的 host 的 IP。
  • 1110:解析到黑名单 IP 或尝试建立到黑名单 IP 的连接。
  • 1111:使用 阻止主机名 选项阻止的主机名。
  • 1200:通用 TCP 错误,不属于下面列出的任何一种。
  • 1201:写入时出现“管道损坏” - 另一方可能已关闭连接。
  • 1202:未知 TCP 错误 - 收到一个无法识别的错误,但它来自操作系统并且设置了 errnoerror 中的消息包含操作(写入、读取)、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 错误,其值为添加到 1611 的特定HTTP/2 错误代码的值。
  • 1630:一般 HTTP/2 流错误。
  • 1631 到 1649:HTTP/2 流错误,其值为添加到 1631 的特定HTTP/2 错误代码的值。
  • 1650:一般 HTTP/2 连接错误。
  • 1651 到 1669:HTTP/2 连接错误,其值为添加到 1651 的特定HTTP/2 错误代码的值。
  • 1701:解压缩错误。

阅读更多关于错误代码的信息。

jslib

jslib 是 k6 团队维护的 JavaScript 库集合,可在 k6 脚本中使用。

描述
aws允许与 Amazon AWS 服务交互的库
httpx封装 k6/http 以简化会话处理
k6chaijsBDD 断言风格
http-instrumentation-pyroscope用于检测 k6/http 以发送 baggage headers,供 pyroscope 读取的库
http-instrumentation-tempo用于检测 k6/http 以发送跟踪数据的库
utils在日常负载测试中有用的小型实用函数