【问题标题】:How to loop CSV file values using Ultimate Thread Group?如何使用 Ultimate Thread Group 循环 CSV 文件值?
【发布时间】:2020-06-27 04:56:15
【问题描述】:

我有这个 links.csv 文件:

METHOD,HOST,PATH,HITS
GET,google.com,/,7
GET,facebook.com,/,3

我想使用Ultimate Thread Group (UTG) 创建一个 JMeter 测试计划,根据上面 CSV 中的最后一列 (HITS) 随机化命中。

查看结果树时,我希望看到如下内容:

1. google.com
2. google.com
3. facebook.com
4. google.com
5. google.com
6. google.com
7. google.com
8. google.com
9. facebook.com
10. facebook.com

理想情况下,我想将 UTG 设置为使用以下设置:

  • 启动线程数 = CSV 文件中所有命中的总和(例如 7 + 3)
  • 初始延迟 = 0
  • 启动时间 = 60
  • 保持负载 = 30
  • 关机时间 = 0

如何做到这一点?我很欣赏代码示例和屏幕截图,因为我还是 JMeter 的新手。

【问题讨论】:

  • 如果你将主机名如${url}传递给采样器名称,你可以查看url名称

标签: jmeter


【解决方案1】:

我只能考虑从您的原始文件中生成一个新的 CSV 文件,以便:

  1. 获取“HITS”的“总和”
  2. 根据“命中”生成包含方法、主机和路径的行

为了达到这个目的:

  1. setUp Thread Group 添加到您的测试计划中
  2. JSR223 Sampler添加到线程组
  3. 将以下代码放入“脚本”区域:

    def entries = new File('/path/to/original.csv').readLines().drop(1)
    def sum = 0
    def newCSV = new File('/path/to/generated.csv')
    newCSV << 'METHOD,HOST,PATH' << System.getProperty('line.separator')
    
    entries.each { entry ->
        def values = entry.split(',')
        def hits = values[3] as int
        sum += hits
        1.upto(hits, {
            newCSV << values[0] << ',' << values[1] << ',' << values[2] << System.getProperty('line.separator')
        })
    }
    
    props.put('threads', sum as String)
    
  4. 在 Ultimate Thread Group 中使用 __P() function${__P(threads,)} 一样
  5. 在 Ultimate Thread Group 的 CSV 数据集配置中使用新的“生成”CSV 文件

【讨论】:

  • 嗨,谢谢你的想法。你介意为我分享一些截图吗?谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
相关资源
最近更新 更多