Jmeter系列之接口依赖


以下主要介绍接口依赖的三种处理方式:JSON Extractor、正则表达式、边界提取器(Boundary Extractor)。


在接口自动化中,需要将多个流程串联起来才能将程序整个流程测试通过,会出现后一个接口的请求要用到前面接口的返回值。比如调用商品列表接口请求需要先登录,这时就需要先登录后,获取登录结果中的token,商品列表接口请求时携带token即可。




JSON Extractor

1
使用场景
JSON Extractor后置处理器用在返回格式为json的HTTP请求中,用来获取返回的json中的某个值,并保存成变量供后面的请求进行调用或断言等。

2
Json Extractor界面说明

①HTTP请求,右键,依次选择Add--》Post-Processors--》JSON Extractor。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


②创建的 JSON Extractor页面如下:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

           

  • Name:json后置表达式的名称,标识作用,建议使用有意义的名字;

  • Names of created variables:保存的变量名,后面使用${Variable names}引用;

  • JSON Path  expressions:json path表达式;

  • Match No:匹配数字(0代表随机,1代表第一个,-1代表所有);

  • Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值都保存,名为“变量名_ALL”,使用场景需要获取的值有多个,后面需要对这一组数据进行操作;

  • Default Values:找不到时默认值,比如设置为null。


JsonPath语法:

JsonPath说明
$文档根元素
@当前元素
.或[]匹配下级元素
..递归匹配所有子元素
*通配符,匹配下级元素
[]下标运算符,根据索引获取元素,JsonPath索引从0开始
[,]连接操作符,将多个结果拼接成数组返回,可以使用索引或别名
[start:end:step]数据切片操作
?()过滤表达式


以上的语法规范,细心的小伙伴可能会发现语法中 ..表示递归匹配所有子元素,简单粗暴,用..获取所有匹配的子元素,通过索引拿到想要的值,以下以实战进行演练。



3
实战小例子


①创建线程组、http请求。其中http请求配置如下:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

②运行结果如下:

{
    "msg": "OK",
    "code": 0,
    "data": {
        "token_info": {
            "token_type": "Bearer",
            "expires_in": "2020-06-09 12:40:27",
            "token": "eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjExNTE1LCJleHAiOjE1OTE2Nzc2Mjd9.u8XfG1vzNmFkkNweiZ2N3hKrzZbIIiI2zb6Z44RAHw7XVrQwoFYTw4vOAL1vK4dquh62atZZoIdmYGjOI-FuRQ"
        }
    }
}

③HTTP请求右键,新建JSON Extractor,配置如下:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


④创建Debug Sampler及察看结果树,运行之后,在Debug Sampler查看token是否提取成功。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=




正则表达式



1
使用场景
从请求的响应结果中取到需要的内容,作为下一个接口的入参从而实现关联。比如登录后,用正则表达式获取token,其他接口携带token请求。

2
正则表达式提取器界面说明

①HTTP请求右键,依次点击添加--》后置处理器--》正则表达式提取器。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


②创建的正则表达式提取器页面如下:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

             

APPly to:

  • Main sample and sub-samples: 作用于主节点的取样器及对应子节点的取样器;

  • Main sample only:仅作用于主节点的取样器;

  • Sub-samples only: 仅作用于子节点的取样器;

  • JMeter Variable Name to use: 作用于jmeter变量(输入框内可输入jmeter的变量名称),从指定变量值中提取需要的值。


要检查的响应字段:

  • 主体:响应报文的主体,最常用;

  • Body(unescaped):主体,是替换了所有的html转义符的响应主体内容,注意html转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用;

  • Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能;

  • 信息头:响应信息头;

  • Request Headers:请求信息头;

  • URL:请求url;

  • 响应代码: 响应状态码,比如200、404等;

  • 响应信息: 响应信息。


引用名称:

提取结果之后的变量名称,即下个请求需要引用的值,后面引用方式是${变量名}。


正则表达式:

使用正则表达式解析响应结果,()括号表示提取字符串中的部分值,前后是提取的边界内容。一般通用的正则表达式(.+?)。

如需了解更多关于正则表达式知识,可参照:Python自动化测试-正则表达式解析一文。


模板:

如果正则表达式有多个提取结果,则结果是数组形式。若只有一组表达式,则使用$1$,两组正则匹配使用$1$$2$,以此类推。


匹配数字:

正则表达式匹配数据的结果可以看做一个数组:-1表示全部,0表示随机,1表示第一个,2表示第二个,依次类推。


缺省值:

如果参数没有取到值,那默认给个值,比如null。



3
实战小例子

①创建一个线程组。

②创建一个HTTP请求,用来发送登录请求,登录接口请求参数配置如下。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


③HTTP请求,右键,创建一个正则表达式提取器,登录接口返回结果如下:

{
    "data": {
        "mobile": "12345678",
        "id": 500,
        "rid": 0,
        "email": "adsfad@qq.com",
        "username": "admin",
        "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTA5MDY3MzAsImV4cCI6MTU5MDk5MzEzMH0.M3CWrgsDUMvnhkprQMBJ1wWY5OKO-mKiOD4EJ2YV4zc"
    },
    "meta": {
        "msg": "登录成功",
        "status": 200
    }
}


正则表达式提取token,配置如下:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


④创建一个察看结果树,运行后,接口返回如下:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=




Boundary Extractor



1
使用场景
边界提取器(Boundary Extractor),不需要写复杂的正则表达式,只要填写左右边界即可。
2
边界提取器界面说明

①HTTP请求右键,依次选择Add--》Post Processors--》Boundary Extractor。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


②边界提取(Boundary Extractor)界面如下:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


APPly to:

  • Main sample and sub-samples: 作用于主节点的取样器及对应子节点的取样器;

  • Main sample only:仅作用于主节点的取样器;

  • Sub-samples only: 仅作用于子节点的取样器;

  • JMeter Variable Name to use: 作用于jmeter变量(输入框内可输入jmeter的变量名称),从指定变量值中提取需要的值。


要检查的响应字段:

  • Body:响应报文的主体,最常用;

  • Body(unescaped):主体,是替换了所有的html转义符的响应主体内容,注意html转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用;

  • Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能;

  • Response Headers:响应信息头;

  • Request Headers:请求信息头;

  • URL:请求url;

  • Response Code: 响应状态码,比如200、404等;

  • Response Message: 响应信息。


引用名称:

提取结果之后的变量名称,即下个请求需要引用的值,后面引用方式是${变量名}。


左边界:

要提取字符的左边。


右边界:

要提取字符的右边。


匹配数字(0代表随机):

-1 匹配所有,0 随机,1 代表匹配第一个,以此类推,n 取匹配的第n个。


缺省值:

如果没有取到值,那默认给个值,比如null。



3
实战小例子

①创建http请求,配置如下:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


②创建察看结果树,运行结果如下:

{
    "msg": "OK",
    "code": 0,
    "data": {
        "token_info": {
            "token_type": "Bearer",
            "expires_in": "2020-06-09 12:40:27",
            "token": "eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjExNTE1LCJleHAiOjE1OTE2Nzc2Mjd9.u8XfG1vzNmFkkNweiZ2N3hKrzZbIIiI2zb6Z44RAHw7XVrQwoFYTw4vOAL1vK4dquh62atZZoIdmYGjOI-FuRQ"
        }
    }
}

③http请求,右键,新建边界提取器(Boundary Extractor),配置如下:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


④创建Debug Sampler,运行之后,查看token是否正确获取。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=




原文地址:https://blog.51cto.com/u_10913485/2872548

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Jmeter:Authenticationcredentialswerenotprovided上次在使用Jmeter对手机app进行录制后,使用查看结果树对脚本进行回放,出现了{“detail”:“Authenticationcredentialswerenotprovided.”}的问题上次的链接地址:https://blog.csdn.net/Test20201990/article/details/
初次使用jmeter时,结果树中返回的数据为未转码内容,如下:  1、在后置处理器中增加beanshellpreprocessor,如下:  Strings=newString(prev.getResponseData(),"UTF-8");charaChar;intlen=s.length();StringBufferoutBuffer=newString
jmeter默认语言设置: 1、临时设置:进入options--ChooseLanguage-- 选择中文简体,设置后语言 切换成中文,重启失效 2、永久设置:进入jmeter目录下的bin目录,用文本编辑工具ue或notepad++等 打开jmeter.properties文件,进行编辑: 找到行: #language=en 修改为: language=
第一步:打开jmeter工具。 第二步:点击鼠标右击,点击添加_线程_线程组,新增线程组。 第三步:添加HTTP请求 第四步:点击页面调试器(以谷歌浏览器为例F12)填写协议,IP,请求,路径 第五步:1.填写参数2.若页面里面没有token可以拿authorization替代,则需要创建HTTP信息头管理器,并进行
在之前的博文中,Jmeter二次开发——基于Java请求,已介绍了Jmeter二次开发的基础情况,上次分享的是java请求开发,今天来分享下Jmeter中的函数开发。聊到Jmeter的函数,知道Jmeter使用的博友肯定很熟悉。Jmeter自带一个函数库,有很多的函数,比如:__P,__Random,函数助手给我们提供了很多的方便
打开虚拟机然后用远程连接工具SSH连接到数据库将serveragent.zip放到Linux环境中在虚拟机中复制路径进入到/opt/目录解压serveragent.zip修改端口为4444永久保存到防火墙中运行startAgent.sh连接虚拟环境里面的数据库更改地址切换路径修改SQL语句点击
jmeter断言之Beanshell断言(判断数据库结果是否符合预期)该篇文章主要讲一下beanshell断言处理数据库结果。(一)首先需要添加配置原件JDBCConnectionConfiguration连接数据库信息,然后发送jdbc请求获取预期结果。我现在使用得是result_variable_name获取得是响应结果集。接下来对数
《jmeter连接MSQL数据库指导》**一、**首先安装msql服务器。在桌面安装,过程中选择认证方式为之前的认证方式,新的认证可能会导致后面连接失败,报错认证问题。其次:打开安装好的数据库,新建一个database----例如:lhd然后再这个database里面新建一个表,例如:table01,然后表中可以自
前言本章主要讲述Windows环境下实现Jmeter+Ant+Jenkins自动化持续集成注:Jmeter+Ant+Jenkins实现集成的前提是这三者环境都已安装部署好关于Jmeter及Jenkins的下载安装我已在其他篇blog已讲述,这里主要讲一下Ant的部署配置传送门1)Jmeter:https://blog.csdn.net/Makasa/art
接口类型rest接口:通过http的get和post方式得到数据,返回报文为json格式soap接口:通过soap协议得到数据,相比httpservice更能处理复杂的数据,请求和返回报文都为xml格式接口测试作用1.在后端程序完成后,可尽早进行系统测试,发现bug2.解决系统测试复杂度,测试脚本运行速度快,节省
目录 一、Jmeter简介二、Jmeter安装三、设置Jmeter语言为中文环境四、Jmeter主要元件五、Jmeter元件的作用域和执行顺序六、Jmeter进行接口测试流程七、Jmeter进行接口测试流程步骤详解 八、总结如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、
在使用cookie管理器时,没有选择对应的策略会导致cookie传递不了下面来讲一讲这些用法 作用:用于管理Testplan运行时的所有的cookie。可以手动存储,也可以自动存储;每次反复清除cookie?:勾选后将每次请求结束后都会将本次请求产生的cookie进行清除,下次请求时重新获取。CookieP
接口测试及常用接口测试工具解析一、常见接口:二、前端和后端:三、什么是接口测试:四、接口组成五、为什么要做接口测试:六、接口测试怎么测:七、用什么工具测那些关于接口测试的二三事,首先大家要搞清楚,什么是接口,其次是前后端,之后逐一抽丝剥茧让它明朗起来,没有一蹴而就的事
jmeter接口java二次开发五步走第一步:了解jmeter处理java请求的流程​ Jmeter处理请求的流程:Jmeter会读取用户传入的数据,把数据初始化到Jmeter中。调用Java请求时,jmeter会运行内部的runTest函数,调用封装的JAVA接口,获取到返回数据获取到返回数据后,Jmeter可以把返回数据
1、添加断言1)先根据“结果树”中的“HTML”中的“响应数据”,找到需要检查的网页中的文本   2)复制上述内容,根据“结果树”中的“Text”中的“响应数据”,确定最终确定要检查的文本(可能含有标签)3)在线程组下找到需要检查的url,右击“添加”→断言→响应断言    
了解需求:1、性能测试过程中,我们经常需要对流程化的业务进行性能测试,其中涉及到很多接口,这时候问开发拿接口和参数就会降低工作效率,直接用jmeter的录制功能就能提高工作效率2、开发接口案例中,我们也经常会碰到一些上传、下载、导入等等一些接口功能,这些脚本如果直接问开发
 随机数https://blog.csdn.net/qq19970496/article/details/101027184随机日期https://blog.csdn.net/qq19970496/article/details/101027813随机字符串https://blog.csdn.net/qq19970496/article/details/101027925随机变量https://blog.csdn.net/qq19970496/article/details/1
JmeterP1性能测试关键指标1,这些指标大家看到后有什么感觉呢?对于功能测试,一般结果就两种,成功的或者是不通过的,有问题的和没问题的,有毛病的和没毛病的,比如打开网页,能打开就打开,打不开就打不开2,性能测试要更复杂一点,不能直接说行还是不行,要有一个参数,一个多维度的指标,来衡量他,比
  jmeter录制脚本示例  jmeter手工脚本编写与调试  业务逻辑实现之逻辑控制器  业务脚本参数化实现  jmeter处理cookie  beanshell脚本  jmeter脚本录制badboy:        
压力测试压力测试是考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在使用压力测试,我们希望找出其他测试方法更难发现的错误,其中有主要有两种错误类型:内存泄漏,并发和同步1.性能指标响应时间:响应时间是指客户端发起请求开始到客户端接收到从服务器返回的响应