【问题标题】:Execute csv rows, one by one, on all threads在所有线程上一一执行 csv 行
【发布时间】:2018-07-28 05:16:02
【问题描述】:

我的测试计划有一个 csv 数据集配置元素,一个带有 http 采样器的线程组。 我想从 csv 读取第一个元素,使用 20 个线程运行 50 次迭代,然后对我的 csv 的所有 30 行重复这个顺序过程。 我已将 eof 上停止的切换设置为 true。

大多数解决方案,我已经在 Stack Overflow 和其他博客上浏览过,对于合适的解决方案,建议添加循环控制器或 while 循环,使用预处理器读取行并循环,但是,在这些情况下,我不是能够实现我的目标。

测试计划

-- 用户定义变量
-- HTTP 请求默认值
-- HTTP 标头管理器
-- JSR223 预处理器(获取 CSV 行数)
-- CSV 数据集配置(在 EOF 时回收 - 假,在 EOF 时停止 - 真)
-- 线程组
-- HTTP 采样器(GET,将每个 csv 数据集元素作为路径的一部分传递)
-- 查看结果树

通过上面的设置,我看到整个 csv 被迭代了,我包含了一个带有循环计数的循环控制器,将 HTTP 采样器移到它下面。 但是,当我这样做时,我无法在线程组中使用迭代。

文章参考:

Use same row per thread from a CSV data set in JMeter

How to read each and every row of csv by single user in JMeter?

How to loop each thread with unique data from CSV Data Config file

JMeter - multiple user taking unique row from CSV file

【问题讨论】:

  • 链接到您研究的内容并解释为什么它不适合您。展示您尝试过的内容,以便其他人可以帮助您解决问题。如果不这样做,您就会期望其他人从头开始为您解决问题。也许看看how to ask
  • @Richardissimo,谢谢您的评论,错过了附加工件。请参考,以上更新。感谢分享上面的文章,顺便说一句,从来没有期望有人从头开始解决我的问题。

标签: jmeter jmeter-4.0


【解决方案1】:

您的要求太“异国情调”,我建议您从现有文件中创建一个新的 CSV 文件:

  • 第一行重复 100 次(20 个线程 x 50 次迭代)
  • 第二行重复100次
  • 第三行重复 100 次
  • ...
  • 第 30 行重复 100 次

如果您在生成文件时遇到问题,您可以在运行时执行此操作,例如:

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

    SampleResult.setIgnore()
    def generated = new File('/path/to/new/csv/file')
    generated.delete()
    new File('/path/to/old/csv/file').readLines().each { line ->
        1.upto(100, {
            generated << line << System.getProperty('line.separator')
        })
    }     
    
  4. 在主线程组中“正常”使用 CSV 数据集配置,只需将其指向使用 /path/to/new/csv/file

请参阅The Groovy Templates Cheat Sheet for JMeter 了解更多有用的 Groovy 代码 sn-ps 示例,您可以使用这些示例来增强 JMeter 测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 2014-03-04
    相关资源
    最近更新 更多