首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jmeter vars.put不保存变量(jsr223预处理程序)

Jmeter vars.put不保存变量(jsr223预处理程序)
EN

Stack Overflow用户
提问于 2017-07-17 07:26:26
回答 2查看 6.3K关注 0票数 2

我希望将变量存储在goovy中,并在以后使用它们。

我从“用户定义的变量”中获得我的初始值(这些变量由maven设置)

但是当我改变了它们,然后把它们放在那里,它们就不会被永久地储存起来。

因此,效果如下:

代码语言:javascript
复制
... INFO ...: throughput was: 600
... INFO ...: throughput is now: 720
... INFO ...: throughput is now (get): 720
... INFO ...: throughput is now (get): 720
... INFO ...: throughput is now (get): 600
... INFO ...: throughput is now (get): 600

剧本:

代码语言:javascript
复制
org.apache.jmeter.testelement.property.JMeterProperty;


int troughtputEnabled = Integer.parseInt(vars.get("enableTroughput"));
if(troughtputEnabled == 1){
    int req = Integer.parseInt(vars.get("idCounter"));
    int troughput = Integer.parseInt(vars.get("throughput"));
    if (req%100 == 0){
        log.info("throughput was: " +  troughput);
        troughput += 120;
        log.info("throughput is now: " +  troughput);
        vars.put("throughput",troughput+"");
        log.info("throughput is now (get): " +  vars.get("throughput"));
    }
    log.info("throughput is now (get): " +  vars.get("throughput"));

}

有人能看到我在这里做错了什么吗(日志只用于调试)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-17 07:57:00

所以我让它起作用了

代码语言:javascript
复制
import org.apache.jmeter.testelement.property.JMeterProperty;
import org.apache.jmeter.util.JMeterUtils;

int troughtputEnabled = Integer.parseInt(vars.get("enableTroughput"));
if(troughtputEnabled == 1){
    int req = Integer.parseInt(vars.get("idCounter"));
    int troughput = Integer.parseInt(vars.get("throughput"));
    if (req%100 == 0){
        log.info("throughput was: " +  troughput);
        troughput += 120;
        log.info("throughput is now: " +  troughput);
        vars.put("throughput",troughput+"");
        log.info("throughput is now (get):---------------- " +  vars.get("throughput"));
        JMeterUtils.setProperty("troughput", troughput +"");

    }
    else
    {
        String tempTroughput = JMeterUtils.getProperty("troughput");
        if (tempTroughput != null && !tempTroughput.equals("")){
            vars.put("throughput",tempTroughput+"");
        }

    }
    log.info("throughput is now (get): " +  vars.get("throughput"));

}

问题似乎是vars.put只适用于当前线程。

票数 2
EN

Stack Overflow用户

发布于 2017-07-17 07:40:48

第一次迭代在if (req%100 == 0)中,所以局部变量是增加120次迭代,没有在if (req%100 == 0)中得到,所以打印vars.get("throughput"),保持600。

如果您希望更新变量,只需将其放在troughput += 120;之后的vars中即可。

代码语言:javascript
复制
vars.put("throughput",   String.valueOf( troughput));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45138273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档