news 2026/4/30 4:12:25

Jmeter脚本参数化和正则匹配

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jmeter脚本参数化和正则匹配

我们在做接口测试过程中,往往会遇到以下几种情况

每次发送请求,都需要更改参数值为未使用的参数值,比如手机号注册、动态时间等
上一个接口的请求体参数用于下一个接口的请求体参数
上一个接口的响应体参数用于下一个接口的请求体参数,比如:sessionId、token
上一个接口的响应体参数用于下一个接口的url接口地址中
上一个接口的响应头参数用于下一个接口的请求体参数,比如:token
......
针对以上种种情况,我们都可以通过参数化和正则提取的方式来解决

一、参数化

举例演示,提供一个注册和登录的接口,请求体需要手机号和密码进行注册登录,并且注册过的账号再次注册会提示已注册,因为不管是未注册还是已注册的手机号去注册接口都会调用成功,所以我会在注册接口上添加一个断言

注册接口:

登录接口:

断言:

我们再次注册时,就会断言失败

1.用户定义的变量

上面的示例看到,每次去调用接口都要手动修改手机号码,并且注册和登录接口都要同步修改,这样操作相当繁琐,针对这个问题我们使用用户定义的变量的工具进行优化

在线程组上:右键—>添加—>配置元件—>用户定义的变量

我们把注册和登录的手机号和密码都提取出来放到这里

定义了之后,我们需要调用该参数,调用方式是在对应的取样器里,使用${key}的格式替换取样器请求体里的值,这样我们就可以每次只修改一次就可以在所有的接口上通用了

虽然在此基础上已经得到了相应的优化,我们能不能做到每次运行的时候都不用去修改用户定义的变量里面的值呢?答案是可以的,这时候我们要使用到函数助手,构造相应的随机函数

对于函数的各种用法,这里不做说明,可以通过函数助手的帮助去查看各个函数的使用方法

我们通过函数助手来构造一个生成随机手机号的方法来替换用户定义的变量的值

2.CSV数据文件设置

该方法也是参数化的一种场景,我们可以提前使用csv文件或者其它文本文件 (txt、log、xml、json...)构造大量数据,然后再读取文件里面的内容引用到对应的接口当中去,这里要注意的是在国内csv我们使用excel编辑器保存后遇到中文会出现乱码的情况,因此需要进行转码后才能正常使用!

在线程组上:右键—>添加—>配置元件—>CSV 数据文件设置

我们先构造测试数据

然后配置CSV数据文件设置:

此时我们可以直接替换接口参数的值为该变量名称,但是不可以替换用户定义的变量的值,会引用不到

执行结果如下:

我们如果设置并发量为5,则会依次读取每一行数据

3.用户参数

在用户定义的变量中使用随机生成手机号的方式执行,它的执行原理是在整个线程组执行会话之前创建一次后,执行过程中的所有线程都会去使用这个值,并不是每个线程组使用时都会随机生成不一样的值,所以在并发测试中,遇到这种情况就不行了,因此我们可以用户参数的工具来使得每个线程组调用的时候都能随机生成一个随机数

在线程组上:右键—>添加—>前置处理器—>用户参数

我们可以将上面用户定义的变量中由函数助手生成的函数拿到用即可

我们将接口参数化替换

设置并发为10,查看结果:

二、正则提取

上面我们处理的是随机数,这里我们则要通过一些方法将下个接口要使用的参数用上个接口的请求体、响应头或者响应体中提取出来,以此来处理接口依赖的问题,因为暂时没有好的实例,这里只讲使用方法

1.JSON提取器

在指定的接口取样器上:右键—添加—后置处理器—JSON提取器

我们在查看结果树里面将JSON Path Tester调出来,可以进行编写表达式进行测试验证表达式是否正确,注意该提取器只适用于接口的json响应体

JSON提取 器的表达式语法格式为:$.key的格式

如果响应体遇到嵌套列表的形式,如:

{"domain": [ {"id": "sdfhhsdfafvgg"}, {"name": "Tom"} ] }

如果要提取name的值,表达式为:$.domain[1].name

{ "tenant": "admin", "domain": [ {"id": "sdfhhsdfafvgg", "name": "Tom"}, {"id": "234gdgdh45h", "name": "Jerry"} ] }

如果要提取所有name的值,表达式为:$..name 返回结果为一个列表

我们将正确的表达式填入到JSON提取器的配置当中,后面的接口就可以通过${变量名称}的方式调用该参数

2.正则表达式提取器

在指定的接口取样器上:右键—添加—后置处理器—正则表达式提取器

正则表达式的格式:左边界(.*?)右边界 以code为例:

我们执行一次查看提取结果:

最后:下方这份完整的软件测试 视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 4:12:24

App测试中ios和Android的区别

1、Android长按home键呼出应用列表和切换应用,然后右滑则终止应用; 2、多分辨率测试,Android端20多种,ios较少; 3、手机操作系统,Android较多,ios较少且不能降级,只能单向升级&…

作者头像 李华
网站建设 2026/4/30 4:03:01

SlimeVR蝴蝶追踪器:无基站全身动捕技术解析

1. SlimeVR蝴蝶追踪器项目概述SlimeVR蝴蝶追踪器是一套革命性的全身动作捕捉系统,专为虚拟现实应用场景设计。作为一名长期关注VR技术发展的从业者,我对其创新性的设计理念印象深刻。这套追踪器采用分布式IMU传感器方案,通过10个轻量化节点&a…

作者头像 李华
网站建设 2026/4/30 4:00:35

如何让B站抢票不再靠运气:5个实用技巧提升你的成功率

如何让B站抢票不再靠运气:5个实用技巧提升你的成功率 【免费下载链接】biliTickerBuy b站会员购购票辅助工具 项目地址: https://gitcode.com/GitHub_Trending/bi/biliTickerBuy 还在为B站会员购抢票而烦恼吗?每次心仪的活动门票开售,…

作者头像 李华
网站建设 2026/4/30 3:57:25

CaTok:1D因果标记化在视觉任务中的创新应用

1. 项目背景与核心价值在计算机视觉领域,图像标记化(Image Tokenization)一直是连接原始像素数据与高层语义理解的关键桥梁。传统方法如ViT(Vision Transformer)采用的二维分块方式虽然简单直接,但在处理视…

作者头像 李华