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

如何通过JMeter设置的“用户定义变量”进行迭代/循环?

公孙茂学
2023-03-14

是否有可能像CSV数据集(WHILE-COUNTER-CSV数据集Config)一样,对“用户定义的变量”集进行迭代或循环?

我想为“User Defined Variables”集合中包含的每个变量激发一个JDBC请求(Select语句)。它在CSV文件中工作得很好,但我不知道如何在变量集中循环。有可能吗?我有各种场景,在那里我想要循环一个“用户定义的变量”集。

共有2个答案

马梓
2023-03-14

不能只在用户定义的变量列表中进行迭代。从安全角度来看,不应该允许您这样做。

你应该坚持使用csv文件。

参考资料:

>

  • https://guide.blazemeter.com/hc/en-us/articles/206733689-using-csv-data-set-config

    http://jmeter.apache.org/usermanual/component_reference.html#user_defined_variables

    http://jmeter.apache.org/usermanual/component_reference.html#user_parameters

  • 苍嘉澍
    2023-03-14

    为了能够使用ForEach控制器迭代用户定义的变量,您只需要遵循以下简单的命名约定:

    • var_1=somevalue
    • var_2=someothervalue
    • var_3=someMoreValue

    但是,如果希望保留原始的变量名,则可以创建一组额外的JMeter变量,这些变量可以通过以下步骤由ForEach控制器使用:

    >

  • 假设您有以下用户定义的变量:

    并且希望在ForEach控制器中使用它们的值

    在脚本中的某个地方添加JSR223测试元素(采样器、前/后处理器等),并将以下代码放在其“脚本”区域中

    import org.apache.jmeter.threads.JMeterVariables;
    
    int counter = 1;
    
    JMeterVariables tempVars = new JMeterVariables()
    
    vars.entrySet().each { entry -> 
        def name = entry.getKey()
        if (!name.equals("JMeterThread.last_sample_ok") && !name.equals("JMeterThread.pack") && !name.equals("START.HMS") && !name.equals("START.MS") &&
            !name.equals("START.YMD") && !name.equals("TESTSTART.MS")) {
            tempVars.put("tempVar_" + counter, entry.getValue())
            counter++;
        }
    }
    
    vars.putAll(tempVars);
    

    脚本完成后,您应该有3个更多的JMeter变量

    有了它们之后,您就可以使用ForEach控制器,配置如下:

    因此您将能够使用${current}(或者您放入JDBC请求中的“output variable name”中的任何内容

    请参阅Groovy是Black的新文章,了解在JMeter测试中使用Groovy的更多信息。

  •  类似资料:
    • 问题内容: 有没有办法遍历Java SparseArray(适用于Android)?我曾经很容易通过索引来获取值。我找不到一个。 问题答案: 似乎我找到了解决方案。我没有正确注意到该功能。 因此,我将使用以下内容:

    • 问题内容: 我有以下代码可以SSH到节点并从其他设备中找到RSSI。 bot_ipv6是ssh到的ipv6地址的列表,脚本使用pexpect来ssh。 数据现在包含该设备的输出。 我想浏览数据并仅获取地址及其对应的RSSI。当命令可以在本地运行并输出到文件时,此代码有效: 匹配和匹配行是在其中定义的函数,在其他地方则在文件中查找以将字符与所要查找的字符进行匹配。 我的问题是我不知道如何将数据输出到

    • 问题内容: 我正在测试一个Web应用程序。在主页的导航菜单中,单击节点后, 将调用javascript 函数。我查找了此功能,该页面将在重定向到目标 页面之前设置。 那么,如何为每个请求在JMeter中设置cookie? 问题答案: 在BeanShell预处理器中,放入: 请注意,使用JSR223 PreProcessor + Groovy + Caching会更好地提高 性能

    • 问题内容: 我正在尝试设置脚本以增加Xcode项目的内部版本号。我进行了一次API调用以获取当前的内部版本号,然后我希望对其进行递增,然后将该新的版本号用作环境变量,以便Xcode插件可以使用它。 我安装了EnvInject插件,但是我不知道如何将var从我的shell脚本中获取到环境变量中。 这设置为我需要的值,但是如何将其分配给环境变量,以便以后在工作中访问它? 问题答案: 添加一个构建步骤以

    • 问题内容: 我应该如何自定义unittest.mock.mock_open来处理此代码? 我第一次尝试。 这失败了,大概是因为代码不使用read,readline或readlines。unittest.mock.mock_open的文档说:“ read_data是一个字符串,供文件句柄的read(),readline()和readlines()方法返回。对这些方法的调用将从read_data中获取

    • 用户定义变量 数据库支持用户自定义变量,自定义变量使用@开头,能够被用于任何表达式和参数中。变量是不能持久的,作为范围为 session,这就意味着变量只在定义它的那个 session 里是有效的。一个变量通常使用 SET命 令来声明: SET @USER = 'Joe'; 变量也可以通过使用 SET() 方法来改变值。在查询中可以直接使用: SET @TOTAL = NULL; SELECT