• 前言
  • 一、什么是接口关联?
  • 二、JMeter关联方法:
    • 1.正则表达式提取器
    • 2.Json Extractor提取器
    • 3.边界值提取器
  • 总结

前言

关联的概念: 关联也称为串行参数或数据依赖。                           

   在开展接口测试的过程中,我们会发现很多接口需要依赖前面的接口,需要我们动态从前面的接口返回中提取数据,也就是我们通常说的关联。 通俗来讲:上一个接口的返回值作为下一个接口的入参。

示例: 登录接口-下单接口          

首先,登录接口返回包含用户身份认证信息的token,后续的接口需要附带上这个token才能被服务器识别身份。


一、JMeter关联方法:

1. 正则表达式提取器:通过正则表达式来提取数据。适用于任何情况。      

2. Json Extractor提取器:通过JsonPath表达式来提取数据。仅适用于服务器返回的是json格式的数据。      

3. 边界值提取器

二、具体操作:

1、jmeter——正则表达式提取器

1)、原理:通过左右二边不变的边界来提取中间变的返回值

2)、常用表达式: 左边界(.+?)右边界

左边界(.*?)右边界

():括号里表示要提取的数据

.   匹配任何字符串

+  一次或多次

?  不要太贪婪,在找到第一个匹配项后停止

*  匹配规则内所有字符串

 * 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配

.*  贪婪匹配原则,即匹配到不能匹配为止

.*?    .+? 非贪婪匹配,即在匹配成功的情况下尽可能少的匹配

3)、 (.+?)  和   (.*?)  的区别?

(.+?)提取1个字符串及以上,不要太贪婪,在找到第一个匹配项后停止;

(.*?)提取0个字符串及以上,要取的值是空值的时候也可以取得到

如:“test":""  要取test的值,使用  (.+?) 匹配不到值。使用  (.*?) 则可以取到test的值为空,                    写法是:  “test":"(.*?)"

实例:提取token供后续接口使用:

1.运行登录接口,获取返回值token,使用非贪婪匹配法提取token;

2.在登录接口右击添加后置处理器→正则表达式提取器,提取token;

3.在后续的请求中使用${token}进行引用

4.使用调试取样器检查是否提取成功(添加取样器(线程组→取样器→Debug Sampler)、运行测试、通过察看结果树的调式取样器-检查结果)

2、jmeter——Json Extractor提取器

使用场景:接口关联,当前一个接口返回的数据类型为json格式的数据,需要从返回的json数据中提取数据

1)用法说明: 用于提取请求返回结果中的某个值或者键值对的数据。

标准写法为$.key,其中key为返回结果对象中的一个键,如果是多层则继续用.key进行即可,如果遇到key的value值为一个List,则使用.key[n],其中n为list中元素的编号。

Json提取器语法说明:

$    根节点,表示json整个对象

.     点,表示下个节点。格式:key.key

[]    下标运算符,根据索引获取元素,也可以用来连接父、子节点。格式key["key2"]

一般来说,使用 [] 可以提取多个子节点作为一个子JSON对象。格式$["key","key2"]

..    递归匹配所有子元素,表示提取所有节点、子节点中符合条件的节点值。格式$..

*    表示通配,提取所有

完整的语法说明请见:https://github.com/json-path/JsonPath

 2)json路径表达式有两种:绝对路径、相对路径:

①绝对路径:$.节点名称(复杂的:$.一级节点.二级节点.要提取的节点)一层一层去提取

②相对路径:$..提取节点的key。同级不同级但是相同的key都被提取

区别:

①绝对路径取多个值时,变量名都一样;

②相对路径取多个值时,每个值都有一个变量名,变量名为 自定义的那个_下标。如:返回3个值,自定义变量名为id,那个3个值的变量名为id_1,id_2,id_3。  调用时需要哪个值就用${id_?}

3)json提取结果校验 

在察看结果树种选择Json Path Tester查看返回的相应数据,Json Path Expression输入需要通过jsonpath方式获取的值点击Test检查结果是否正确

4)将提取的变量设置为全局变量(跨线程也可调用)

①添加取样器→ BeanShell 取样器

②用__setProperty()函数设置全局变量,复制后添加在BeanShell后置处理器中

③替换变量为${ 变量名}

使用全局变量,${__P(newtoken)、${__property(newtoken)}

JMeter接口测试___接口关联相关推荐

  1. jmeter+接口测试练习+接口关联+Json提取

    1.测试用例设计 2.因为要执行多条用例,所以在Jmeter添加了http信息头管理器和http请求默认值. 3.查询用户信息接口需要用到登录的token,但要先登录再把token拿出来传到查询的信息 ...

  2. Jmeter怎么实现接口关联?

    Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,应该如何获取前一次请求的结果值,应用于后一个接口呢,拿一个登录的例子来说明如何获取. 1.打开jmeter,新建一个测试计划,在 ...

  3. 【JMeter】JMeter怎么实现接口关联?

    文章目录 前言 一.操作 二.关于正则表达式的举例说明 1.提取单个字符串 2.提取多个字符串 总结 前言 Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,应该如何获取前一次请 ...

  4. JMeter接口测试___参数化方法

    一.JMeter添加参数的常用方法 1.Get请求 2.Post请求 二.JMeter常用参数化的方式 1.用户参数(User Parameter) 2.用户自定的变量(User Defined Va ...

  5. jmeter接口测试步骤(基础)超级详细……接口断言+关联设置教程

    1.jmeter的作用 用来主要做性能测试的工具.jmeter也可以用来做接口测试,接口自动化测试,是一个非常全能的工具. 2.jmeter的安装 1.配置java环境 2.解压apach-jmete ...

  6. 使用Fiddler/Charles+Jmeter进行接口自动化测试和接口性能测试(关联接口测试、接口自动化测试、脚本录制、软件测试、性能测试、测试工具)

    目录 1.Fiddler篇,脚本录制,接口自动化测试,性能测试 2.Charles篇,脚本录制,接口自动化测试,性能测试 背景:有时候不是说我们不懂一个一个接口进行拼装编辑,只是为了我们能更好更快的进 ...

  7. 【全栈接口测试进阶系列教程】入门到入职的jmeter接口测试工具实战,接口测试步骤,正则表达式jsonpath,断言,接口加密,beanshell,jdbc,jmeter+ant+jenkins

    目录 [本文简介看之前请详细的看完介绍] 本文是全网首发的[全栈接口测试进阶系列教程]jmeter接口测试工具从入门到入职, 接口系列包含 接口测试系列包含所有的接口测试工具入门到入职,如果你喜欢的话 ...

  8. 21天Jmeter打卡day16参数传递token传递,接口关联

    21天Jmeter打卡day16参数传递 token传递,接口关联 https://www.jianshu.com/p/e3a116f7bf6b 实现效果,把第一个请求的响应结果,提取出来,作为变量传 ...

  9. 【接口测试】JMeter测试WebSocket接口

    目录 一.WebSocket简介 二.JMeter测试WebSocket接口 三.WebSocket和Socket的区别 最近老被问到WebSocket,突然想到以前大学时上Java课的时候,老师教我 ...

最新文章

  1. 论文解读 Combating Adversarial Misspellings with Robust Word Recognition
  2. 解决mysql中limit和in不能同时使用的问题
  3. AppCompat 22.1,Google暴走,MD全面兼容低版本
  4. python自增_关于 python 的自增运算
  5. 有关UNLIMITED TABLESPACE权限
  6. IDEA提交项目到SVN
  7. linux 信号_[入门]谈一谈Linux中的信号
  8. 如何添加时区 java_如何在Windows(非Java)应用程序中使用Java时区ID?
  9. oracle、mysql、sql server等;流行数据库的链接驱动配置
  10. WINDOWS PHONE死于自己不兼容
  11. 查成语--每天10行python代码系列!
  12. 新版PassXYZ已上线,新增一次性密码(OTP)管理功能
  13. Mixly-RFID智能门禁
  14. OSChina 周日乱弹 ——朕与先生解战袍,芙蓉帐暖度春宵
  15. mysql 8 my.ini skip_mysql8.0版本skip-grant-tables出现的新问题
  16. 智能建造与建筑工业化协同发展主战场之一:攻克核心工业软件
  17. Base64自定义编码表及破解
  18. 人类首次捕获到反物质 500克能量可超过氢弹
  19. Redis “max number of clients reached“的分析过程
  20. 使用office2007发表csdn博客

热门文章

  1. DirectX Sample-PIXGameDebugging:采用PIX调试程序
  2. if中return的用法
  3. python3.7 ''' '''注释里添加\u \U \N就会报错的bug
  4. Android 8.0源码下载及编译环境搭建
  5. Mac 新建超级管理员账号
  6. Swagger-diff爬坑
  7. 5s系统升级无服务器,iPhone5s升级到最新系统,事实证明这不是作死!
  8. DB2 SQLSTATE 42803
  9. python中import matplotlib.pyplot as plt解决办法
  10. 高德地图自定义POI的样式