性能测试工具 jmeter 能够从 csv 数据的一列数据中读出不同的值吗?

Time · 2021年05月31日 · 最后由 Time 回复于 2021年06月01日 · 1102 次阅读

目前配合 csv 的文件,传递参数。post 请求体我引用了变量,但是可以看三图中,发出的请求是同一个值组成的数组
目前一列的数据量很大,没办法整很多列。要求是要从 5 万个值中随机取 2000 个出来组成数组,能从一列中提取出来的办法么
谢谢!


共收到 11 条回复 时间 点赞
Time #12 · 2021年05月31日 Author

或者给个方案,现在有已知的 5W 个数,让我能够在请求的时候传参能拿到 5W 个数中的 2000 个数,每次请求的值不一样~

自己用 beanshell 写一个不出现重复的随机数方法,生成 2000 个随机数,然后用这 2 千个随机数在 5 万行中取值

jmeter 组件没有能实现这个需求的,只能自己用 beanshell 写 java 代码。

Time #3 · 2021年05月31日 Author

${CSVRead(/home/item7.txt,${Random(0,50000,)}) 偷懒解决法,读文件随机从 5w 个值取,传参 2000 个

Time 关闭了讨论 05月31日 18:59
Time 重新开启了讨论 05月31日 18:59

自己写 beanshell 比较合适,语法比较简单 链接 https://blog.csdn.net/hujyhfwfh2/article/details/80862134

Time 回复

你这个是每次从第 n 列取第一行的数据

Time 回复

你这个随机数是有可能重复的

首先,题主的组成数组的写法是非常低效和代码冗余的。

推荐写法:
(1)并发压力小的话,实时创建数据:用 Beanshell 实现不重复的随机数组
参考:Java 生成不重复的随机数组的方法

(2)并发压力大的话,提前生成数据:每列为 2000 个整数的数组,然后自定义非英文逗号分隔符
参考:JMeter - CSV Data 数据中带有逗号解决方法

还有一个办法是用__FileToString把文件读取成字符串,再 split 处理下。
你的需求是每个迭代都要一次性产生 2000 个 id 放到请求体的列表中进行请求;而 JMeter 组件参数化的逻辑是每个迭代取一行数据不能取多行。
需要区分下。

Time #9 · 2021年06月01日 Author
小狄子 回复

好的,有空是要去学下 beanshell 的写法了。比较匆忙都没细看了😀

Time #13 · 2021年06月01日 Author
在路上 回复

beanshell 的话我这边是需要去学习下,这边并发压力挺大的。我的数组需要传 2000 个值的,我得写两千列而且这些数据还是随机从 5W 个里面取的,我不可能自己去造数组😂 ,只能让他去从 5W 个数里面去取值造数组,csvdata 的这种搞不了~

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册