JMeter通过正则表达式、JSON提取器获取变量
??使用Jmeter开发测试脚本的过程中,经常需要对响应结果进行提取变量,本文就介绍两种经常用到的方法,一种是正则表达式提取器,一种是JSON提取器
??本次介绍一种经常用到的业务场景,首先登录获取Token,然后将获取的Token赋予到HTTP信息头,供其它接口调用
一、JSON提取器
JSON提取器是专门用来对返回的响应结果是application/json格式的报文进行提取,如下所示
首先在需要提前变量的HTTP请求点击右键》添加》后置处理器》JSON提取器
JSON提取器,,变量应用范围,默认选择Main sample only即可
下面给大家讲解写怎么写JSON PATH,只有写出正确的JSON PATH,才能获取到我们需要的变量值,默认我们jmeter的察看结果树显示的结果是Text文本格式,这样我们就不能快速的看出变量的层级,所以需要把查看结果树的显示格式改成JSON Path Tester,该查看结果树还支持直接对结果进行调试,这是很多刚入门的小伙伴不知道的一个功能,很方便,如下所示
JSON的基本语法就是$.然后后面跟要取字段名,比如要取data,就直接写$.data,如果要取msg,就直接写$.msg如下所示
如果还要往下取值,就像文中的token,就需要继续在后面加".",(.代表子元素),然后跟字段名,如$.data.token
在给大家介绍一种结果为数组格式的怎么取值,如下图所示,results保存了数组格式的值,先要知道数组索引,然后才能继续读取数组下的值,学过python的应该就清楚,只要从0依次递增就能取到需要的值,如resulst[0],resulst[1],比如我想取第一个数组中的name值,只需要填写$.data.results[0].name
实际工作中,可能返回的查询结果经常会变化,这时候如果在写死数组索引的位置,比如上面给大家介绍的,写成$.data.results[0].name,如果系统新增了项目,可能就会导致取的值不正确,这时候就需要用到另外一种取值方式,$..results[?(@.name==‘function‘)].id,该json path可以通过一个变量定位到自己所在的数组的索引,然后在去取需要的id,比如automation这个值是唯一值,就可以通过该值取到需要的值,语法如下$..然后后面跟数组名称,本文为results,然后跟[?(@.name==‘function‘)],其中name是序列中的一个唯一值,可以根据需要修改,function是name实际为什么值就填什么,最后在加"."后面跟你需要取的字段名如id,pah都行,只要在这个数组中存在
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/41942.html