当前位置: 首页 > 知识库问答 >
问题:

在JMeter中为同一请求的每次出现更新参数值

宗政楚
2023-03-14

我正在准备作为HTTP请求的一部分发送的数据,所以数据准备部分是在BeanShell预处理器中完成的。

随着请求大小的变化,我需要传递一个可变长度的JSON。我正在for循环中创建JSON主体,但参数没有改变,例如:

try{
    int[] po = {20, 30, 40, 50, 75};
    int rNum = getRandom(0,4);

    String name="${name}";
    String _class="${_class}";
    StringBuilder msgBody = new StringBuilder();
    msgBody.append("{\"name\":\"")
    .append(name)
    .append("\", \"class\":\"")
    .append(_class)
    .append("\", \"marks\":[");
    for (int i=0;i<po\"[rNum];i++)
    {   
        msgBody.append("{ \"subject\":\"${__P(marks${line_offset})}\"," },");
     }
     int length=msgBody.length()-1;
     log.info(String.valueOf(length));
    msgBody.setLength(length);
    msgBody.append("] }");
    vars.put("json",msgBody.toString());
}

${u_P(marks${line_offset})}在循环中保持不变。

如何在循环内部启用更改?

共有2个答案

伏星汉
2023-03-14

你为什么期望它会改变?JMeter属性是整个JVM的全局属性,并在所有线程之间共享。因此,${u_P(marks${line_offset})}将始终具有相同的值,除非您在其他地方设置它。根据文件:

属性与变量不同。变量是线程的局部变量;属性对于所有线程都是通用的

还有几件事需要检查/修复:

>

  • 通常,脚本在当前状态下无法工作,因为它充满了错误,例如:

    int[] po\" = {20, 30, 40, 50, 75}; // won't compile due to \"
    String class="${class}"; // won't compile as "class" is a reserved keyword
    etc.
    

    下次遇到问题时,请提供准确的代码

    从JMeter 3.1开始,建议使用JSR223 Test Elements和Groovy语言进行脚本编写,主要是因为Groovy的性能比Beanshell好得多。特别是在您的情况下,您可以从使用JsonBuilder和/或JsonOutput中受益

    根据JSR223采样器文档,可能是问题的主要原因:

    JMeter在将脚本字段传递给解释器之前会处理函数和变量引用,因此这些引用只会被解析一次。脚本文件中的变量和函数引用将逐字传递给解释器,这可能会导致语法错误。为了使用运行时变量,请使用适当的props方法,例如。

    props.get("START. HMS");

    道具。put(“PROP1”、“1234”)

  • 赵骏奇
    2023-03-14

    在scrips中,使用props代替函数,使用vars代替变量

      props.get("marks" + vars.get("line_offset"));
    
     类似资料:
    • 使用JMeter中的“bzm-Concurrency Thread Group”和“Constant through Timer”组合,我很难实现所需的“每秒请求数”。 结构 我的测试结构如下: Thread组1 > 恒定吞吐量定时器 HTTP请求 线程组2 恒定吞吐量计时器 HTTP请求 Thread组3 恒定吞吐量计时器 HTTP请求 Thread组4 恒定吞吐量计时器 HTTP请求 数字 我

    • Tomcat为什么要这样做,我可以做些什么来防止它?

    • 问题内容: 我每周有一些设备的日志数据。对于某些设备,它从星期一开始,对于某些设备,它在星期三开始,等等。有时此数据中有〜月的间隔,但是我希望DataFrame索引仍然包含每周具有NaN值的行。 我正在尝试在Python中使用,但是我无法获得期望的结果。 例: 是)我有的: 我期望/想要的(请注意带有NaN的2个新行): 我得到的是: 因此,我获得了每个星期日的所有值和日期。但是我不需要每个星期天

    • 问题内容: 我正在尝试计算中每行显示的数字,例如: 行显示3次。 一个简单的天真的解决方案将涉及将我所有的行都转换为元组,然后应用,如下所示: 产生: 但是,我担心我的方法的效率。也许有一个提供此功能的内置库。我将此问题标记为,因为我认为它可能具有我正在寻找的工具。 问题答案: 您可以使用另一个问题的答案来获得唯一项目的计数。 使用结构化数组的另一种选择是使用一种void类型的视图,该视图将整行连

    • 如何在JMETER中创建一个测试,该测试将: 总共提出100个请求,但是使 每4次请求站点A和 每5次请求站点B

    • 我的代码怎么了???我正试图写一个递归方法来求一个数中出现的数。编写一个递归函数,对一个正整数num进行编码,从另一个整数中提取一个数字,不进行负计数。如果数字显示的次数正好是数字,则函数返回true,否则返回false。 示例:输入:122231位:2计数:3输出:真