前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Jmeter系列之接口依赖

Jmeter系列之接口依赖

作者头像
可可的测试小栈
发布于 2020-06-17 06:51:56
发布于 2020-06-17 06:51:56
2.4K00
代码可运行
举报
文章被收录于专栏:全栈测试全栈测试
运行总次数:0
代码可运行

VOL 133

10

2020-06

今天距2021年204天

这是ITester软件测试小栈第133次推文

本文4445字,阅读约需12分钟

上一篇:Jmeter系列之参数化,主要介绍JMeter的三种参数化方式:用户参数、CSV Data Set Config CSV函数助手。

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

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

JSON Extractor

1

使用场景

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

2

Json Extractor界面说明

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

②创建的 JSON Extractor页面如下:

  • 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语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
说明

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

3

实战小例子

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

②运行结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "msg": "OK",
    "code": 0,
    "data": {
        "token_info": {
            "token_type": "Bearer",
            "expires_in": "2020-06-09 12:40:27",
            "token": "eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjExNTE1LCJleHAiOjE1OTE2Nzc2Mjd9.u8XfG1vzNmFkkNweiZ2N3hKrzZbIIiI2zb6Z44RAHw7XVrQwoFYTw4vOAL1vK4dquh62atZZoIdmYGjOI-FuRQ"
        }
    }
}
代码语言:javascript
代码运行次数:0
运行
复制

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

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

正则表达式

1

使用场景

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

2

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

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

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

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,两组正则匹配使用12,以此类推。

匹配数字

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

缺省值

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

3

实战小例子

①创建一个线程组。

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "data": {
        "mobile": "12345678",
        "id": 500,
        "rid": 0,
        "email": "adsfad@qq.com",
        "username": "admin",
        "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTA5MDY3MzAsImV4cCI6MTU5MDk5MzEzMH0.M3CWrgsDUMvnhkprQMBJ1wWY5OKO-mKiOD4EJ2YV4zc"
    },
    "meta": {
        "msg": "登录成功",
        "status": 200
    }
}

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

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

Boundary Extractor

1

使用场景

边界提取器(Boundary Extractor),不需要写复杂的正则表达式,只要填写左右边界即可。

2

边界提取器界面说明

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

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

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请求,配置如下:

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "msg": "OK",
    "code": 0,
    "data": {
        "token_info": {
            "token_type": "Bearer",
            "expires_in": "2020-06-09 12:40:27",
            "token": "eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjExNTE1LCJleHAiOjE1OTE2Nzc2Mjd9.u8XfG1vzNmFkkNweiZ2N3hKrzZbIIiI2zb6Z44RAHw7XVrQwoFYTw4vOAL1vK4dquh62atZZoIdmYGjOI-FuRQ"
        }
    }
}
代码语言:javascript
代码运行次数:0
运行
复制

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

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

今日问题:在接口自动化测试中,你用什么方式处理接口依赖?

(欢迎在留言区发表你的看法)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ITester软件测试小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
通过案例带你轻松玩转JMeter连载(24)
6.2 后置处理器/提取器 1 正则表达式提取器 正则表达式提取器,由正则表达式来得到所需要的内容。通过右键点击菜单,选择“添加->后置处理器->正则表达式提取器”而获得。其界面如图33所示。
顾翔
2021/11/12
6950
通过案例带你轻松玩转JMeter连载(24)
JMeter关联陌生又熟悉
JMeter关联,这几个字看着可能会有点陌生,实际上却是工作中经常会做的一件事情,尤其是接口自动化,它指的是把一个接口的响应作为另一个接口的参数,从而把接口关联起来。
dongfanger
2021/05/18
1K0
JMeter关联陌生又熟悉
学了元件作用域,我终于对JMeter开窍了
先看一下这个例子,测试计划“进入考场”下面有一个线程组,线程组下面有 3 个 HTTP 请求,分别是学生登录、考场 token和进入房间:
dongfanger
2020/11/12
7440
学了元件作用域,我终于对JMeter开窍了
Jmeter接口测试之参数关联
有如下两个接口,通过正则表达式提取器,将第一个接口的城市代码,作为第二个请求的参数传入。
吾非同
2020/10/23
1.7K0
jmeter压测学习5-XPath提取器
有些web项目是前后端不分离的,返回的内容不是那种纯进口返回json格式,返回的是一个HTML页面。 并且有些参数是隐藏在html里面的,需要先从html页面中取出隐藏参数,如:csrfmiddlewaretoken
上海-悠悠
2019/12/05
9200
Jmeter(三十五) - 从入门到精通进阶篇 - 关联(详解教程)
  上一篇中介绍了如果想要同时发送多条请求,那么怎样才能让每条数据某些请求参数改变呢。这就用到了jMeter参数化。在实际测试场景中,我们往往还有这样的需求,登录后服务器响应的token作为下次请求的参数,这就是所谓的参数关联。
北京-宏哥
2021/01/21
4.2K0
jmeter的正则表达式提取器_正则表达式提取
在一个线程组中,B请求需要使用A请求返回的数据,也就是常说的关联,将上一个请求的响应结果作为下一个请求的参数,则需要对A请求的响应报文使用后置处理器,其中最方便最常用的就是正则表达式提取器了。
全栈程序员站长
2022/10/01
4.1K0
jmeter的正则表达式提取器_正则表达式提取
全网最全最细的jmeter接口测试教程以及接口测试流程详解
Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试。
全栈程序员站长
2022/06/29
1.2K0
全网最全最细的jmeter接口测试教程以及接口测试流程详解
【JMeter-4】JMeter关联:JMeter正则表达式提取器与JSON提取器
关于JMeter的使用,花费大量精力写了JMeter的一系列文章,有图有案例,一方面总结起来作为备忘,一方面希望能给初学者一些帮助。觉得有所帮助的朋友,请点个赞,对于疏漏之处也欢迎指教。
云深i不知处
2020/09/16
2.5K0
性能测试-Jmeter正则表达式提取
jmeter中,接口自动化的关键在于参数关联。比如需要登录的接口,如何调用登录口令?一个增删改查的闭环,如何将接口参数上下传递?在jmeter中,可以利用正则表达式提取器来帮助我们完成这一动作。 1、
用户6367961
2020/02/01
1.7K0
jmeter的正则表达式提取器_正则表达式详解
关于JMeter的使用,花费大量精力写了JMeter的一系列文章,有图有案例,一方面总结起来作为备忘,一方面希望能给初学者一些帮助。觉得有所帮助的朋友,请点个赞,对于疏漏之处也欢迎指教。
全栈程序员站长
2022/10/01
4.3K0
jmeter的正则表达式提取器_正则表达式详解
Jmeter接口测试实战-数据传递
接口与接口之间没有关联的测试是缺乏意义和没有灵魂的,只有数据在不同接口之间传递才能勾画出业务场景重要的链路. 我们用较为通用的http/https协议,接口普遍返回json方式为例.
louiezhou001
2019/07/25
1.3K0
Jmeter接口测试实战-数据传递
Jmeter系列之常用组件(二)
在上一篇:Jmeter系列之常用组件(一),主要介绍线程组、HTTP请求默认值、用户定义的变量、固定定时器的应用场景及实战。
可可的测试小栈
2020/06/04
1.4K0
jmeter正则提取器的使用_java正则表达式用法
一、正则表达式提取器各名词解 (1)Apply to Main sample and sub-samples( 作用于主节点的取样器及对应子节点的取样器) Main sample only( 仅作用于主节点的取样器) Sub-samples only( 仅作用于子节点的取样器) Jmeter-Variable Name to use( 作用于jmeter变量(输入框内可输入jmeter的变量名称),从指定变量值中提取需要的值)
全栈程序员站长
2022/09/30
5170
jmeter正则提取器的使用_java正则表达式用法
JMeter处理器09
在jmeter中提供了两种处理器,用于修改请求数据或处理响应数据。 前置处理器 后置处理器 前置处理器 前置处理器是在请求发送前做相关处理。可以用于在请求发送前修改HTTP协议头、数据部分等等各种需要
苦叶子
2018/04/04
1.3K0
JMeter处理器09
Jmeter性能测试 -2 熟悉Jmeter使用
做性能测试之前要对Jmeter有一定的了解,本文通过案例,帮大家快速上手Jmeter。如果你已经在用,那么可以忽略。
孟船长
2022/02/23
2.1K0
Jmeter性能测试 -2 熟悉Jmeter使用
28:jmeter断言之响应断言
一个请求发送出去,如何判断该请求执行的任务是否成功呢?通过检查请求的响应数据,是否返回预期想要的数据,如果是,判断请求成功;反之请求失败。断言就是用来判断请求成功与否的。
BUG弄潮儿
2020/06/15
2.1K0
28:jmeter断言之响应断言
【接口测试】JMeter接口关联测试
上篇我们学习了JMeter的安装,如何发起http请求和dubbo请求,那么这篇我们来学习接口管理测试,这就要使用到JMeter提供的JSON提取器和正则表达式提取器了,下面我们来看看是如何使用的吧。
用户9913368
2022/08/13
1.3K0
【接口测试】JMeter接口关联测试
JMeter详细使用手册
Jmeter可以作为web服务器与浏览器直接的代理网关,以便捕获浏览器的请求和web服务器的响应,如此就可以很容易地生成性能测试脚本。有了性能测试脚本,jmeter就可以通过线程来模拟真实用户对web服务器的访问压力。
互联网金融打杂
2022/08/01
3.8K0
JMeter详细使用手册
Jmeter接口测试之断言详解
断言,这是一个软件术语,简单来说,就是依靠软件程序自动判断操作结果的正确性。在接口测试中,这里的断言就是判断接口请求是否符合预期,从而判断接口用例是否执行通过。
吾非同
2020/10/23
5.1K0
相关推荐
通过案例带你轻松玩转JMeter连载(24)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验