groovy 用户参数是否可由前处理器或后处理器访问?

eoxn13cs  于 2023-03-07  发布在  其他
关注(0)|答案(2)|浏览(140)

在用户参数中,我有:

在用户定义变量中,我有:

在预处理器中,我有:

def varB = vars.get("varB");
def varA = vars.get("varA");
log.info(varB);
log.info(varA);

在后处理器中,我有:

def varA = vars.get("varA");
def varB = vars.get("varB");
log.info("varA = $varA");
log.info("varB = $varB");
vars.put("varB", "varA");
log.info("After change = $varB");

但varB没有更新:

2023-03-04 12:51:33,674 INFO o.a.j.m.J.JSR223 PreProcessor: xyz
2023-03-04 12:51:33,674 INFO o.a.j.m.J.JSR223 PreProcessor: abc
2023-03-04 12:51:33,913 INFO o.a.j.e.J.JSR223 PostProcessor: varA = abc
2023-03-04 12:51:33,914 INFO o.a.j.e.J.JSR223 PostProcessor: varB = xyz
2023-03-04 12:51:33,914 INFO o.a.j.e.J.JSR223 PostProcessor: After change = xyz

我正在尝试存储varA的值,以便可以在另一个测试负载中使用它(同一个线程组,并且我不想使用属性)

cig3rfwq

cig3rfwq1#

不,在你的情况下它是可以访问的。错误在于保存参数。你没有传递变量,而是以字符串的形式传递

def varA = vars.get("varA");
def varB = vars.get("varB");
log.info("varA = $varA");
log.info("varB = $varB");
vars.put("varB", varA);
log.info("After change = "+ vars.get("varB"));

这将产生以下预期输出

2023-03-04 23:33:43,691 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-1
2023-03-04 23:33:43,707 INFO o.a.j.m.J.JSR223 PreProcessor: xyz
2023-03-04 23:33:43,707 INFO o.a.j.m.J.JSR223 PreProcessor: abc
2023-03-04 23:33:43,753 INFO o.a.j.e.J.JSR223 PostProcessor: varA = abc
2023-03-04 23:33:43,753 INFO o.a.j.e.J.JSR223 PostProcessor: varB = xyz
2023-03-04 23:33:43,753 INFO o.a.j.e.J.JSR223 PostProcessor: After change = abc
q8l4jmvw

q8l4jmvw2#

替换此行:

vars.put("varB", "varA");

和这个

vars.put("varB", vars.get("varA"));

因为你传递的是varA的硬编码字符串,而不是变量值。
此外,将Debug Sampler或调试后处理器与查看结果树侦听器结合使用,而不是将值打印到jmeter.log文件,可能会更容易

相关问题