目录
3.在JMETER的HTTP请求中组建接口(URL拆分介绍)
5.在http请求上右键——添加——后置处理器——JSON提取器
1.添加线程组(有的的步骤是给萌新写的,当然我也是萌新,尽量详细一点通俗易懂)
2.在线程组下——添加取样器——HTTP请求
3.在JMETER的HTTP请求中组建接口(URL拆分介绍)
1)协议通常是http或者https
2)对应协议的端口号则是8080与443端口
3)请求方式为一般为post或get、delete
4)路径是URL中间段,内容编码通常为utf-8
5)服务器名称或ip则URL的中间的一部分
- 统一资源定位符URL:标记万维网的各种资源,形式为
协议 :// 主机 : 端口 / 路径
例如https://blog.csdn.net/weixin_71957062
那么这条URL的服务器名称(主机)就是“blog.csdn.net”
路径则是“weixin_71957062”
协议为“https”,端口为443
在jmeter中协议填写之后,端口可以填写,也可以不填写端口,JMETER会根据你的协议,在发送请求的时候自动补充为默认端口
如下图所示
下图证明我们的接口组建完毕,且能够跑通,大家如果想要查看运行结果可以添加察看结果树,往下面的步骤继续走,会有介绍如何添加
4.添加察看结果树
1.添加察看结果树——测试计划——监听器——察看结果树
添加察看结果树的目的是请求这个接口后,可以去看到这个接口的响应数据,方便咱们知道自己所需提取的数据的路径
添加后点击启动按钮(绿色小三角)
2.将察看结果树放置在线程组下方,这样的话只会执行这个线程组下的脚本,设置响应体文本为JSON格式(根据实际接口响应数据情况来)
a.这里设置好了之后点击查看结果树,点击上方的绿色箭头
b.成功请求后可以看到token成功返回了
c.Token内容在data里的access_token字段中,可以继续往下面看如何提取的
5.在http请求上右键——添加——后置处理器——JSON提取器
这里介绍一下JSON提取器各个字段的意思(个人经验,有问题的地方欢各位俊男靓女评论区指出)
Apply to:应用范围,选默认的main sample only就行了
Names of created variables :给提取出来的参数定义一个名字
JSON Path expressions :匹配JSON响应体的数据,格式$.路径名,图中是绝对路径引用
还有相对路径引用,例如$..access_token就是相对引用
Match No(0 fro Random):匹配JSON响应数据的次数,1则是匹配一次,找到一次想要 的数据就不 找了,可以填写n,就是找n个数据,如果想要把 全部符合的数据都找到的话就是【-1】表示获取所有的符合数据
Compute concatenation var(suffix_ALL):勾选的话,JSON提取器会将找到的所有符合的数 据写入到指定目录的文件中,用 “, “分隔符将它们 连接起来,并将其存储在名为 _ALL的var文件中
Default Values:如果没找到想要的数据,在这里填写的数据就会赋值给变量,相当于默认值
下图是我组建的一个登录接口的请求(因为这个是我自己本地的接口,所有不能放给大家练手,大家可以使用自己项目的接口来练练手,或者看看如何使用,多一个方法多一条思路嘛),登录成功后会返回一个token,下面的步骤咱们就要将这个token提取出来,提取这个token就需要用到JSON提取器,当然也可以使用正则提取器
该接口执行之后如下图所示
这里可以看到需要提取的【token】内容在“data”里的“access_token”字段中
这里我们JSON Path expressions字段就使用相对路径的引用方式【$..access_token】(这里有两个点,就是把data省略了,让它在第二数据层级任一数据字段找寻下方是否有access_token字段)
也可使用绝对路径的引用方式【$.data.access_token】
tips:不清楚相对路径和绝对路径区别的老铁可以去了解一下
在变量名字段Names of created variables给提取出来的变量命名,我这里命名为【token】,这里可以命名成自己想要的变量名(最好不要命名为中文特殊字符容易出现奇怪的问题)
提取出来的数据只能在当前线程组使用,因为这是一个环境变量(局部变量),需要跨线程使用则需要将这个变量设置为全局变量
下面我使用BeanShell后置处理程序来将这个变量设置为全局变量
6.添加BeanShell后置处理程序
在HTTP请求上右键——添加——后置处理器——BeanShell后置处理程序
添加了之后默认是这样的,可以自己修改一下名字,命个名
使用JMETER自带的函数助手来帮助我们书写设置全局变量的函数(可以方便很多,也能减少我们因自己原因打错符号啥的,导致无法成功设置全局变量)
这里选择__setProperty函数(这个函数是用来设置参数为全局变量)
属性名称:给这个全局变量命名
Value of property :变量的参数值(我这里引用了线程组中的环境变量{token},在上面我用JSON提取器提取出来了)
Return Original Value of property (default false)?:是否返回属性的原始值(默认值为false),如果这里是true,点击生成按钮后就会在下方的“The result of the function is”字段的文本框后返回属性值,也就是Value of property字段填写的参数,这样方便我们查看是否填写正确
我们将生成的函数字符串(${__setProperty(log_token,${token},true)})粘贴到后置处理器的脚本栏
然后执行一次这个线程组,如果没有意外的话就成功创建了这个全局变量啦
7.添加属性显示元件
那我们怎么知道是否成功创建了变量呢?
这就需要用到非测试元件中的【属性显示】元件了
路径是【测试计划】-【添加】-【非测试元件】-【属性显示】
元件添加成功后我们点击查看是否有自己创建的变量,如果没有就重新排查一下上面的操作步骤是否哪里有问题,比如字母大小写(L和i的大小写搞混了啥的),如果变量存在,那么代表我们可以跨线程使用这个变量啦
全局变量的引用需要用特殊的引用方式
引用全局变量与引用咱们的局部变量方式不同,引用局部变量通常是用$符号来进行引用操作,而引用全局变量则需要使用${__P(log_token)}来进行引用,其中P前面的下划线是两个下划线,如果只有一个会引用不上变量
好啦,现在所有的属性都配置好了,我们来验证一下这个变量是否可以成功使用
成功验证!
看到这里相信各位聪明的帅哥美女都学会的JMETER如何提取token以及设置环境变量与全局变量包括怎样使用,如果还有不明白的可以在看看,理解一下,也可以私信问我,欢迎一起学习进步!
觉得有用的话还请动动金手指来个点赞和收藏吧