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


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

    图片

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

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

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

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

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

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

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

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

    【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://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 值的数量与循环次数相同?

  • 相关阅读:
    什么是关系模型? 关系模型的基本概念
    模拟退火算法SA求解多维连续函数极值
    vue3 学习笔记01 -- 搭建项目及基础配置
    Vmware快捷键_Ctrl+Alt_从虚拟机状态 退回 本地状态_获取鼠标
    LeetCode 160. 相交链表
    redis未授权访问漏洞利用
    黄金现货期货各有各的市场
    目前为止的所有取数逻辑收集
    centos7配置syslog客户端上传日志
    【数据结构】时间复杂度_空间复杂度
  • 原文地址:https://blog.csdn.net/m0_73409141/article/details/134034942