Jmeter 接口测试,参数值为列表,如何参数化?

最近在我的教学过程中,我的一个学生问了我一个问题,他们公司的一个接口参数值是列表,列表中值的数量有多有少,问我在 jmeter 中如何让这个参数的值进行参数化?

看到这种问题,你的第一反应是什么?

写 Java 代码?我相信,如果你有一定的程序语言基础,你肯定会想着写代码。因为代码对你来说,不是难事。但是,如果你不懂代码呢?

如果你不懂代码,哪你肯定就会想着用 jmeter 自带的 Random 函数。

但是,当你使用 Random 函数,去生成随机数的时候,如何生成 70 个随机数,用逗号连接,构成一个列表,这个事情难住你了。

下面,我就给不懂代码的同学,讲讲如何使用jmeter 现有的元件来实现这样一个需求。

首先,我们肯定知道,需要用 Random 函数和循环控制器。

在线程组下面添加一个循环控制器,循环控制器只需要设置一个循环次数就可以了。

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337

他的需求是至少 70 个,至于到底多少个没有说,所以,这个循环次数,我们就可以用 Random 随机函数,随机一个大于等于 70 的数字就可以

${__Random(70,79,)}随机函数中最大值,随便写大于 70 的数字。接下来就是造出列表中的第 1 个数。

定义什么元件来接收这个随机数字呢?用户定义变量 , 还是用户参数

听过我的课的同学,肯定都知道使用用户参数,如果不清楚,可以咨询我们的工作人员。

用户参数,是一个前置处理器,所以,我们需要添加一个取样器;我们目的是造数据,这个取样器并不需要发起请求,所以,取样器我们可以使用'调试取样器',生成如:

现在,运行脚本,你会发现,在查看结果树中,每个 '调试取样器' 看到 rd1 变量的值都不一样,但是,每次的值都只有 1 个。

进一步分析需求,需求中,还说,每个值之间用逗号分隔,那我们看下,是否可以在 rd1 这个变量中添加一个'逗号'呢。

添加了,运行,发起不管加载后面,还是在前面,都可以,jmeter 运行没有出错。

这个是什么意思呢?

我在一个函数变量的前面,或后面添加一个'逗号',居然,能正常!

'逗号',是一个字符吗?是!哪这个算不算,两个字符连接呢?

是的!jmeter 中,字符与字符相连,不需要用'+'号,可以直接写在一起,就连接了。

让 rd1 的值,前面或后面,加符号,可以直接相连,哪我们可不可以把 rd1 与自己相连接呢?有了想法,哪就赶紧行动吧。是不是,再'添加变量',定义值为rd1{rd1}?

运行!!!

发现,有 rd2 不管运行多少次,值都只有 2 个。

这是怎么回事呢?

我们来理解一下,变量 rd2 的值为 rd1{rd1} ,其实,是不是就是 rd2 的值,是调两次 rd1,把两个 rd1 连接在一起。如果这个能理解,哪是不是就能理解,不管我们循环多少次,rd2 的值都只有 2 个。

继续想。

会不会想到,rd2 的值用 rd1 与 rd2 自身连接?

运行!

这次,我们看到 rd2 的值,在循环此次不一样的时候,rd2 的值长度不一样,在递增。也就是说,这样,我们可以造出几十个类似的数据连接成的一个列表了。

但是,rd2 的值,最后一个是 ${rd2},这显然又不符合我们的要求。怎么办?

是不是想着又给 rd2 定义一个值?哪这次,继续用用户参数 ,还是用用户定义变量呢?

这次,我们用用户定义变量

楞楞的分不清 用户定义变量 和 用户参数 的用法,可以联系我们的工作人员

运行!

现在,不管我们运行多少次,都能正常生成 rd2 的值了。

在这位同学的接口中,直接使用变量引用 ${rd2},是不是就搞定了。很简单吧!不过,如果,你是一个追求完美主义者。

下面两个问题,你可以思考下,在评论区留言和我探讨一下哦。

问题一:

上述这种方法,生成的 rd2,其实是要比循环控制器的循环次数多 1 的,也就是说,如果循环 70 次,实际 rd2 是有 71 个值的。知道什么原因吗?怎么验证吗?

问题二:

上述的方法,rd2 的值比循环次数多 1,如何使 rd2 值的数量与循环次数相同?

相关推荐
十六点五22 分钟前
Java NIO的底层原理
java·开发语言·python
跟橙姐学代码30 分钟前
不要再用 print() 了!Python logging 库才是调试的终极武器
前端·python
努力往上爬de蜗牛1 小时前
react3面试题
javascript·react.js·面试
小叶lr1 小时前
python 从pycharm部署到新环境
开发语言·python·pycharm
绝无仅有1 小时前
Redis高级面试题解析:深入理解Redis的工作原理与优化策略
后端·面试·github
2301_763471031 小时前
Python单元测试(unittest)实战指南
python
绝无仅有2 小时前
Redis面试解答指南:了解Redis及其应用
后端·面试·github
xiaoxiongip6662 小时前
动态ip适合挂什么项目
网络·爬虫·python·网络协议·tcp/ip·ip
Q_Q5110082852 小时前
springboot+python+uniapp基于微信小程序的旅游服务系统景点信息展示 路线推荐 在线预约 评论互动系统
spring boot·python·微信小程序·django·flask·uni-app
E___V___E2 小时前
设计模式--装饰器模式
python·设计模式·装饰器模式