Jmeter脚本参数化和正则匹配

Jmeter接口测试方法 Jmeter接口测试 Jmeter脚本编写一般分为五个步骤: 1.添加线程组 2.添加http请求 3.在http请求中写入接入url、路径、请求方式参数 4.添加查看结果树 5.调用接口、查看返回值 设置HTTP请求默认值 在有多个请求时,每个请求都需要选择http协议,填写服务器名称或者服务器ip地址,比较重复麻烦,所以可以定义一个http请求默认值,设置所有的请求默认使用http协议,默认服务器名称或服务器ip地址。 在线程组–添加–配置元件–HTTP请求默认值,然后进行配置,并把该元件放置到请求 阅读详情

目录

一、参数化

1.用户定义的变量

2.CSV数据文件设置

3.用户参数

二、正则提取

1.JSON提取器

2.正则表达式提取器


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

  • 每次发送请求,都需要更改参数值为未使用的参数值,比如手机号注册、动态时间等
  • 上一个接口的请求体参数用于下一个接口的请求体参数
  • 上一个接口的响应体参数用于下一个接口的请求体参数,比如: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为例:

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

JMeter接口测试进阶:JSON断言与参数化实战指南 接口测试是软件质量保障的关键环节,其核心在于验证API的响应是否符合预期。这通常涉及对返回的JSON数据进行精准校验,以确保业务逻辑的正确性。JSON断言技术,基于JsonPath表达式,能够从复杂的嵌套结构中定位并验证特定字段的值,是实现自动化验证的基础。从技术价值看,它使测试脚本从简单的请求发送升级为具备智能验证能力的工具,是功能测试性能测试脚本可靠性的基石。在实际应用场景中,结合参数化技术,如使用CSV Data Set Config动态管理测试数据,可以模拟真实用户行为,有效提升测试覆盖率场景真 阅读详情

相关推荐

正则表达式及在Jmeter中的应用

目录1.正则表达式1.1 什么是正则表达式1.2 为什么使用正则表达式2.语法2.1 普通字符2.2 限定符2.3 非打印字符2.4 特殊字符2.5 定位符2.6 修饰符(标记)2.7 选择2.8 运算符优先级3.常用正则表达式及在线工具4.Jmeter正则表达式提取器4.1 Regular Expression Extractor4.2 View Results Tree 中Regular Exp.的使用4.3 Dubug Sapmpler检测正常表达式取值正确性4.4 Jmeter 常用的正则表达式语

u012235980的博客 4960

【P24】JMeter 正则表达式用户参数(RegEx User Parameters)

JMeter 正则表达式用户参数(RegEx User Parameters)参数及使用说明详解

qq_45138120的博客 2600

正则表达式在jmeter中的使用

正则表达式是一种用于匹配字符串模式的工具。通过使用特定的语法规则,可以在文本中搜索替换、提取符合特定模式的文本。特别字符描述匹配任意单个字符,除了换行符\n。要匹配. 使用 \.。匹配前面的字符零次或多次。要匹配*字符,请使用*。匹配前面的子表达式一次或多次。要匹配+字符,请使用+。?匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配?字符,请使用\?。转义字符,用于匹配特殊字符;将下一个字符标记为特殊字符、或原义字符、或向后引用、或八进制转义符。例如,'n' 匹配字符'n'。

qq_41470476的博客 1150

Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法

本章节主要讲解正则表达式提取器中的模板的含义用法。本篇文章,主要是对正则表达式的运用。

weixin_45272371的博客 4800

JMeter-正则表达式

正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

murongzhuzhu的博客 5127

jmeter(六)_正则表达式提取token,写入文件

一.正则表达式提取token,用户名等数据并存入一个指定文件 在login接口下面添加一个正则表达式提取器(在正则表达式中,.代表匹配任何字符串,+代表一次或多次,?代表直到找到第一个匹配项为止) 用Beanshell打印一下,提取token成功 同样的,username也是一样的提取 ...

qq_38175040的博客 2833

JMeter第八讲--线程组_Debug Sampler(调试取样器)

JMeter中调试取样器与察看结果树元件组合就能让我们看到想看的内容。2、想知道正则表达式提取的值是否正确;1、想知道参数化的变量取值是否正确;4、调试时服务器返回些什么内容。3、想知道JMeter属性;

weixin_42562785的博客 178

HttpWatchjmeter的一次性能测试

1、HttpWatch安装后,需要在浏览器--》工具--》加载管理项中显示所有加载项里面,将HttpWatch调整为启用 2、可以在浏览器--》工具--》点击HttpWatch来运行HttpWatch;或者按Shift+F2快捷键来运行HttpWatch 3、手动抓包录制jmeter脚本 (1)、HttpWatch简单使用 (2)、如上图所示,点击开始抓包后,进行页面操作,如这里点击登录后

XiaoXiao_RenHe的专栏 2165

jmeter试用记录-参数化关联

一般来说,用录制功能录制的脚本都需要经过编辑,性能测试脚本的编辑主要涉及到参数化关联这两部分,jmeter支持这两个功能。 一、参数化  参数化是指用参数替代测试脚本中的字符,这里介绍两种常用的参数化方式,随机数文件读取。 1、随机数   打开录制好的脚本,点击Jmeter的“选项”,选择“函数助手对话框”,在“选择一个功能”的下拉框中选择“_Rando

wugang8023的专栏 1272

jmeter 正则表达式的使用

记录一下第一次使用正则表达式的东西,本帖在对jmeter上有一定的了解基础上,之前不做任叙述 1、名称、注释都不说了,你想怎么改就怎么改 2、引用名称,反正你填写完以后,后边http请求调用也好还是哪里调用也好,必须一模一样,打个比方,我在引用名称钟输入 zhengze , 然后我在http请求填写参数的时候,值就写 ${zhengze} 3、正则表达式 ,():括起来的部分就是要提...

weixin_42116341的博客 1900

脚本——HttpWatchjmeter的一次性能测试

1、HttpWatch安装后,需要在浏览器--》工具--》加载管理项中显示所有加载项里面,将HttpWatch调整为启用2、可以在浏览器--》工具--》点击HttpWatch来运行HttpWatch;或者按Shift+F2快捷键来运行HttpWatch3、手动抓包录制jmeter脚本(1)、HttpWatch简单使用(2)、如上图所示,点击开始抓包后,进行页面操作,如这里点击...

weixin_34370347的博客 102
上一篇: Jmeter性能测试插件jpgc的安装
下一篇: 单元测试用例到底该如何设计?
测试小婉
博客等级 码龄4年 1万+粉丝 · 551原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值