【问题标题】:Use request value from list of values in JMeter使用 JMeter 值列表中的请求值
【发布时间】:2011-09-14 13:22:48
【问题描述】:

我确定我过去已经这样做了,但不知何故我无法弄清楚如何;-) 所以,这是我的问题:

我正在尝试创建一个 JUnit 测试计划,其中每次迭代都会通过更改特定参数来修改 HTTP 请求。因此,例如在五次迭代中,我希望发出以下 HTTP 请求:

http://localhost:8080/test/foo.html?id=1
http://localhost:8080/test/foo.html?id=2
http://localhost:8080/test/foo.html?id=3
http://localhost:8080/test/foo.html?id=4
...

我想为测试计划全局配置标识符值,并在 HTTP 请求采样器中使用它们,如下所示:

Path: /test/foo.html?id=${categoryId}

现在的问题:如何全局配置标识符值(我确实想使用StringFromFile)以及如何在采样器中引用它们?

【问题讨论】:

    标签: java testing jmeter web-testing


    【解决方案1】:

    有几种方法可以做到这一点。

    假设你有一个值数组,你可以:

    • 尝试预处理器"User Parameters",创建一个条目 对于每个用户/循环
    • 使用 Beanshell 创建数组的脚本,选择 一个随机并填充你的 变量

    您完全按照您列出的方式引用它们:${varName}

    【讨论】:

    • 我知道计数器,但我拥有的标识符不是连续的(即 3323、5512、2345,...)。我也不想从外部文件中读取,但可以简单地使用 ${__StringFromArrayAtRandomindex('3', '2', '54', '42')}
    • 鉴于您有一组特定值,但不想要外部文件,我会推荐“用户参数”或 beanshell 脚本(更新答案)
    • @BlackGaffAN关于stackoverflow.com/questions/19351587/…的任何帮助?
    【解决方案2】:

    关于实现${__StringFromArrayAtRandomIndex('3', '2', '54', '42')}

    假设您可以使用例如轻松实现您的场景BeanShell Sampler / BeanShell PostProcessor 加上一点代码。

    例如:

    • 设置您的源变量(通过例如User Defined Variables):

      名称 值 类别 3,2,54,42,37

      (即使用逗号作为分隔符,逗号前后没有空格)。

    • 使用 add BeanShell Sampler/PostProcessor 和以下代码:

      导入 java.util.Random; String[] categories = (vars.get("categories")).split(","); int idx = new Random().nextInt(categories.length); 字符串类别 = (categories[idx]); vars.put("categoryId", category);
    • 在脚本中进一步参考随机选取的表单列表值作为${categoryId}

    【讨论】:

    • 只是一个错字:vars.put("categoryId", category);否则,jMeter(至少,Java 6 上的 2.9 版)会报错。
    【解决方案3】:

    要从列表中获取随机变量值,首先将列表或可用值声明为用户变量,并带有前缀和增量索引:

    country_1     Spain 
    country_2     France  
    country_3     Portugal  
    country_4     Italy 
    country_5     England
    

    然后你可以从将前缀与区间中的随机索引连接起来的列表中获得一个随机值:

    ${__V(country_${__Random(1,6,)})}  --> "Spain", "France", "Portugal", etc...
    

    查看this answer 了解完整说明。

    【讨论】:

      【解决方案4】:

      没有变量的最简单的解决方案可以使用vars.getIteration()

      /test/foo.html?id=${__groovy(vars.getIteration())}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-17
        • 1970-01-01
        相关资源
        最近更新 更多