菜单
开源

环境变量

通常,脚本只需要进行少量调整即可在不同上下文中重用。您可以使用环境变量来使脚本的某些部分可调整,而不是为这些不同上下文或环境创建多个单独的脚本。

您可以通过两种主要目的使用环境变量

  1. 将环境变量传递给 k6 脚本
  2. 使用环境变量配置k6 选项

将环境变量传递给 k6 脚本

在 k6 中,环境变量通过全局 __ENV 变量(一个 JS 对象)公开。有关参考,请参见下面的脚本示例

JavaScript
import http from 'k6/http';
import { sleep } from 'k6';

export default function () {
  const res = http.get(`http://${__ENV.MY_HOSTNAME}/`);
  sleep(1);
}

将环境变量传递给测试脚本的推荐选项是使用一个或多个-e / --env CLI 标志(此命令适用于所有平台)

bash
k6 run -e MY_HOSTNAME=test.k6.io script.js

⚠ -e 标志不配置选项

此标志仅向脚本提供变量,脚本可以使用或忽略这些变量。例如,-e K6_ITERATIONS=120 不会配置脚本迭代次数。

将此行为与 K6_ITERATIONS=120 k6 run script.js 进行比较,后者会设置迭代次数。

使用环境变量配置 k6 选项

您还可以使用环境变量配置 k6选项。考虑这个脚本

JavaScript
import http from 'k6/http';
import { sleep } from 'k6';

export default function () {
  const res = http.get('https://test.k6.io');
  sleep(1);
}

默认情况下,此脚本的本地运行将以一个虚拟用户 (VU) 执行一次迭代。要修改默认行为,请将 k6 选项作为环境变量传递。例如,此代码片段配置脚本以 10 个虚拟用户运行 10 秒钟

bash
K6_VUS=10 K6_DURATION=10s k6 run script.js
windows
set "K6_VUS=10 K6_DURATION=10s" && k6 run script.js
powershell
$env:K6_VUS=10 ; $env:K6_DURATION="10s" ; k6 run script.js

如前例所示,您需要在环境变量名称前加上 K6_ 前缀,k6 才会将其评估为选项参数。但是,请注意并非所有选项都支持作为环境变量。您可以通过查看每个选项的文档来确认某个选项是否支持。

请注意,当您在多个位置定义选项时,存在一个优先级顺序来确定要使用的选项。为了确保您始终使用最高优先级,请使用命令行标志而不是环境变量

bash
k6 run -e MY_HOSTNAME=test.k6.io --duration 10s --vus 10 script.js

了解更多