如何为k6测试添加--testenv自定义参数以避免冗余代码?
解决k6自定义参数传递的两种方法
方法一:使用k6原生--env环境变量传递(推荐)
这是k6官方推荐的参数传递方式,无需手动解析命令行参数,简洁可靠。
1. 修改运行命令
把自定义参数改为--env TESTENV=test12,完整命令:
k6 --out csv=results.csv run --vus 60 --duration 2m --env TESTENV=test12 ./mass-login.js
2. 修改脚本获取参数
在脚本中通过__ENV对象读取环境变量,同时设置默认值避免未传参时出错:
export default function () { // 优先取命令行传递的TESTENV值,默认用'qa-04' const targetEnv = __ENV.TESTENV || 'qa-04'; const testenvs = [targetEnv]; // 后续业务逻辑继续使用testenvs数组... }
方法二:使用自定义命令行参数(需手动解析)
如果坚持要使用--testenv这类自定义参数格式,可以把参数放在脚本路径之后,再在脚本中解析__ARGS数组。
1. 修改运行命令
将--testenv test12放在脚本文件路径之后:
k6 --out csv=results.csv run --vus 60 --duration 2m ./mass-login.js --testenv test12
2. 修改脚本解析参数
遍历__ARGS数组,找到--testenv对应的取值:
export default function () { let targetEnv = 'qa-04'; // 遍历命令行传入的自定义参数 for (let i = 0; i < __ARGS.length; i++) { if (__ARGS[i] === '--testenv' && i + 1 < __ARGS.length) { targetEnv = __ARGS[i + 1]; break; } } const testenvs = [targetEnv]; // 后续业务逻辑继续使用testenvs数组... }
两种方法都能避免创建冗余的JS文件,直接通过命令行参数切换环境。
内容的提问来源于stack exchange,提问作者MortenB
相关产品推荐
相关产品推荐

