变量名,其他部分引用方式: ${变量名}
若提取多个变量,多个之间使用分号";"分割
在这里插入图片描述

2,Json表达式

$表示响应的根对象
.表示对象的下一级子对象或者属性
取数组加[],数组索引从0开始,*表示数组所有值

  • 若响应结构为:{“code”:200,“resultMessage”:"",“data”:2}
    $.data 表示取data这个对象
  • 若响应结构为:[{},{},{}]
    $[1或者**] 1,2,3表示取数组第几个元素,*表示取所有
  • 若响应结构为:{“属性”:[{“sx”:1},{},{}]}
    $.属性[0].sx

3,Match no

-1表示匹配所有
0表示随机取值
1表示匹配第一个,2表示匹配第二个
设置变量数量与match no个数要匹配得上,多个提取之间使用;分割

设置为-1时

会提取多个变量,单个变量的引用带具体数值,数字表示提取到的第几个变量。使用方式:${变量名_序列} 序列为1,2,3。。。。

设置为-1时,生成其他相关变量

变量名_matchNr
意思是取到的符合条件的数字个数。可以像使用普通变量一样使用这个_matchNr变量。
变量名_ALL
若是勾选了 计算串联变量(Compute concatenation var(suffix _ALL))则还会生成以_ALL结尾的变量,表示所有变量组合的变量,以分号分割

设置为0或1,2,3等具体数值

取的是单个值,变量的使用是${变量名},不用加序列号

4,默认值

没有匹配上的默认值,取多个值时,可设置多个默认值,多个默认值之间分号分割

提取变量的后续操作

调试器样本查看变量取值情况

查看json提取的数据取值情况
在这里插入图片描述 在这里插入图片描述
这里debug样本器提取了变量pi 还会生成pi_matchNr变量,表示这个变量提取了多少匹配的值。

Beanshell写变量到文件

beanshell后置处理程序
若是请求之后,提取变量,写文件使用的是beanshell后置处理程序
beanshell取样器
非请求之后写入使用的是beanshell取样器
两种beanshell元件,其中代码暂时没有发现不同
在这里插入图片描述
这是使用beanshell写入获取的quo_no的ALL变量quo_no_ALL ,写入文件后取值直接也是带分号的。

遍历提取到的值

在这里插入图片描述
变量名为quo_no
match no为-1提取数组对象所有符合值

使用ForEach遍历器遍历获取的所有quo_no
在这里插入图片描述
ForEach控制器,从0开始(不包括0),停止循环为 提取 器用于 提取 请求 返回结果中的某个值或者某一组值,用法比正则表达式要简单,标准写法为$.key,其中key为返回结果map中的一个键,如果是多层则继续用.key进行即可,如果遇到key的value值为一个List,则 使用 .key[n],其中n为list中元素的编号,如下 使用 实例来说明下如何 使用 ;还是以上面那个 json 字符串作为例子,如果要获取records下的前两个元素的id值,则 使用 语法$.result.records[:2].id。$.result.records[2].id 是排除前两条 数据 ; meter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全, 使用 方便,是一个比较轻量级的测试工具, 使用 起来非常简单。因为 jmeter 是java开发的,所以运行的时候必须先要安装jdk才可以。 jmeter 是免安装的,拿到安装包之后直接解压就可以 使用 ,同时它在linux/windows/macos上都可以 使用 jmeter 可以做接口测试和压力测试。其中接口测试的简单操作包括做http脚本(发get/post 请求 、加cookie、加header、加权限认证、上传文件)、做webservice脚本、参数化、断言、关联(正则表达式 提取 器和处理 json - json pathextrac 正则表达式 提取 器说明: Apply to:应用范围(一般就选择默认的Main sample only),就算有重定向,一般也是 提取 最终那个 请求 的接口。 要检查的响应字段:样本 数据 源。 主体: 接口响应主体内容,一般要 提取 普通http响应... JSON 后置处理器(PostProcessor)允许 使用 JSON Path 语法从 JSON 格式的响应中 提取 数据 。类似正则表达式 提取 器,必须位于HTTP采样器、或者其它可以返回 JSON 数据 的采样器下,作为子结点。 Json Path表达式可以 使用 点标记或者括号标记操作符操作符描述$需要查找的根元素。所有 JSON PATH表达式都以这个开头@正被某个过滤谓词处理的当前节点(The current node being processed by a filter predicate)*通配符。 FileWriter fstream = new FileWriter("C:\\Users\\admin\\Desktop\\tokens.csv",true); BufferedWriter out = new BufferedWriter(fstream); out.write(vars.get("tokens")+","); out.write(System.getProperty("line.separator")); out.close(); fstream.close 正则表达式很多内容,在这篇文章中不会展开详细说的哦,主要还是说 提取 器的 使用 想详细学习正则表达式可以看这系列的文章:测试必知必会系列 - 正则表达式 - 随笔分类 - 小菠萝测试笔记 - 博客园 正则 提取 器 如果有这样的情况:一个完整的操作流程,需要先完成某个操作,获得某个值或 数据 信息,然后才能进行下一步的操作(也就是常说的关联/将上一个 请求 的响应结果作为下一个 请求 的参数); 在 jmeter 中,可以利用正则表达式 提取 器来帮助我们完成这一动作。 首先:在默认的测试计划中添加一个线程组,然后添加取样器,这里我以JDBC 请求 做例子: 然后:右键添加后置处理器→正则表达式 提取 器,正则表达...         关联是 Jmeter 工具中非常重要的一个技术。因为在测试过程过有些 数据 是经常发生变化的,要获取并 使用 这些 数据 ,就要 使用 关联。         比如: 用户登录后,session信息都不同,有些操作要 使用 session,就需要将这个动态的信息保存下来。 还有经常遇到的场景,第二个 请求 提交的参数要从第一个 请求 的返回 数据 中获取。... 概述在接口自动化的过程中,经常遇到需要遍历的参数组。 jmeter 在中,foreach控制器可以实现遍历参数,但是只能有一个入参。一旦遇到数组,foreach控制器表示我也无能为力。。。为了解决这个问题,今天教大家一个实现数组遍历的方法涉及元件 json 表达式+循环控制器+计数器+ match Nr 函数+beanshell脚本案例分析首先我们来看一个例子 。在下图中,我们需要把三组返...