环境变量
通常,脚本只需要进行少量调整即可在不同上下文中重用。您可以使用环境变量来使脚本的某些部分可调整,而不是为这些不同上下文或环境创建多个单独的脚本。
您可以通过两种主要目的使用环境变量
- 将环境变量传递给 k6 脚本
- 使用环境变量配置k6 选项
将环境变量传递给 k6 脚本
在 k6 中,环境变量通过全局 __ENV
变量(一个 JS 对象)公开。有关参考,请参见下面的脚本示例
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 标志(此命令适用于所有平台)
k6 run -e MY_HOSTNAME=test.k6.io script.js
⚠ -e 标志不配置选项
此标志仅向脚本提供变量,脚本可以使用或忽略这些变量。例如,
-e K6_ITERATIONS=120
不会配置脚本迭代次数。将此行为与
K6_ITERATIONS=120 k6 run script.js
进行比较,后者会设置迭代次数。
传递环境变量的第二个选项是从本地系统获取它们。
MY_HOSTNAME=test.k6.io k6 run script.js
set "MY_HOSTNAME=test.k6.io" && k6 run script.js
$env:MY_HOSTNAME="test.k6.io"; k6 run script.js
⚠️ 警告
默认情况下,传递系统环境变量不适用于 k6 archive
、k6 cloud run
和 k6 inspect
。这是一项安全措施,旨在避免将敏感数据上传到 Grafana Cloud 的风险。要覆盖此模式,请指定--include-system-env-vars。
使用环境变量配置 k6 选项
您还可以使用环境变量配置 k6选项。考虑这个脚本
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 秒钟
K6_VUS=10 K6_DURATION=10s k6 run script.js
set "K6_VUS=10 K6_DURATION=10s" && k6 run script.js
$env:K6_VUS=10 ; $env:K6_DURATION="10s" ; k6 run script.js
如前例所示,您需要在环境变量名称前加上 K6_
前缀,k6 才会将其评估为选项参数。但是,请注意并非所有选项都支持作为环境变量。您可以通过查看每个选项的文档来确认某个选项是否支持。
请注意,当您在多个位置定义选项时,存在一个优先级顺序来确定要使用的选项。为了确保您始终使用最高优先级,请使用命令行标志而不是环境变量
k6 run -e MY_HOSTNAME=test.k6.io --duration 10s --vus 10 script.js