如何使用 Groovy 函数参数化 JMeter Loop Controller?

How to parametrize JMeter Loop Controller with Groovy function?

我是 Jmeter 的新手,但可以处理“简单”的测试计划。我确实需要帮助解决我面临的问题。目前我 运行 遇到了一个关于如何参数化 Loop Controller 循环计数 Groovy 函数的问题。

我确实找到了很多示例,但它们都带有静态循环计数,例如:${__groovy(new File('test.csv').readLines().size(),)} . 我真的很想参数化 'test.csv' 部分。因此,我将其替换为 ${csvFile},例如:


${__groovy(new File(${csvFile}).readLines().size(),)}.

在 'Test Plan' 的 'User Defined Variables' 部分,我创建了变量 'csvFile'。 Test plan image in here

当我执行脚本时,我在日志中检索到如下错误:

2022-01-25 11:35:14,870 WARN o.a.j.f.Groovy: Error running groovy script
javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script16.groovy: 1: Unexpected input: '\' @ line 1, column 12.
   new File(D:\devenv\projecten\JM_InterestDeterminationService\inputmessages.csv).readLines().size()
              ^

1 error

错误是否指向反斜杠?是不是因为 Windows OS?

我必须用“/”替换“\”吗?我如何以及在哪里可以做到这一点? 我开始摆弄 .replaceAll("\\", "/") 和 .replaceAll("\\\\", "/"),但我不知道把它放在哪里以及正确的语法是什么。

你们中有人能帮帮我吗?

这是 why it's not recommended to inline JMeter Functions or Variables into Groovy scripts 的原因之一。

只需将 vars shorthand 用于 JMeterVariables class 实例即可读取您的 csvFile 变量值,例如:

${__groovy(new File(vars.get('csvFile')).readLines().size(),)}

它应该可以解决您的问题。

关于这个和其他 JMeter 的更多信息 API shorthands: Top 8 JMeter Java Classes You Should Be Using with Groovy