1.使用场景

在对返回结果较复杂且为json结构的HTTP请求进行提取某一个值,以用作其他接口使用或者用来断言的等。

2.使用

添加步骤:选择线程组中的HTTP请求——右键“添加”——后置处理器——JSON Extractor

先来一个免费的API网站:API Shop,专业的数据交易平台 | API免费调用,行业数据下载,数据定制

到时候,一般的测试数据,我们就直接从这个网站中获取就好。

{"result": {"area": "广州","areaCode": "440100","areaid": "101280101","dayList": [{"area": "广州","night_wind_direction": "东北风","night_air_temperature": "13","night_weather_pic": "http:\/\/app1.showapi.com\/weather\/icon\/night\/07.png","day_weather_code": "01","night_weather": "小雨","night_weather_code": "07","day_weather": "多云","day_wind_power": "0-3级","day_air_temperature": "18","day_weather_pic": "http:\/\/app1.showapi.com\/weather\/icon\/day\/01.png","day_wind_direction": "东北风","areaCode": "440100","areaid": "101280101","night_wind_power": "3-4级","daytime": "20211219"},{"area": "广州","night_wind_direction": "东北风","night_air_temperature": "12","night_weather_pic": "http:\/\/app1.showapi.com\/weather\/icon\/night\/21.png","day_weather_code": "07","night_weather": "小到中雨","night_weather_code": "21","day_weather": "小雨","day_wind_power": "3-4级","day_air_temperature": "15","day_weather_pic": "http:\/\/app1.showapi.com\/weather\/icon\/day\/07.png","day_wind_direction": "东北风","areaCode": "440100","areaid": "101280101","night_wind_power": "3-4级","daytime": "20211220"}],"ret_code": 0},"statusCode": "000000","desc": "请求成功"
}

接着我们就创建一个JSON提取器。

 参数说明:

Variable names(名称):提取器的名称

Apply to(应用范围)

Main sample and sub-samples:应用于主sample及子sample。Main sample only:默认的是这个,应用于主sample。Sub-samples only:应用于子sample。JMeter Variable :应用于变量命名的内容。

Variable names:保存的变量名,后面使用${Variable names}引用。

JSON Path  expressions:上一步中调试通过的json path表达式。

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

Default Values:找不到时默认值,一般设置为NOT FOUND。

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

特别注意:

当json提取器要提取两个值(或两个以上)的时候,一定要填写默认值,不然会报错
“Mismatch between number of variables, json expressions and default values” ;
反之:只提取两个值,默认值填了三个,也会报该错。

3.JSON Path  expressions中的参数详细

JsonPath 描述
$ 根节点
@ 当前节点
.or[] 子节点
.. 选择所有符合条件的节点
* 所有节点
[] 迭代器标示,如数组下标
[,] 支持迭代器中做多选
[start:end:step] 数组切片运算符
?() 支持过滤操作
() 支持表达式计算

4.配置

5.结果

6.获取上一个请求结果进行请求

7. jsonpath 语法

$..Name:列出所有省份

$..Province[0].Name 提取 Province 中第一个 list 中的 Name
$..[?(@.Name=='Beijing')] 筛选出省份名为 Beijing 的所有 list 数据
$.Province[:2].population 筛选前两条数据
$.Province[2].population 排除前两条数据
$.Province[-2].population 排除后两条数据
取所cabinInfos列表下,patFlag=Y时的cabin,standardPrice和finallyPrice。
$..[?(@.patFlag=="Y")].["cabin","standardPrice","finallyPrice"]

8.Json 取多个变量

JSON Extractor 使用 json path 表达式匹配,可以一次取多个变量
例子:提取前两个 list 里面的 Name
添加 JSON Extractor,分号间隔多个参数;分号分隔多个 json 表达式;分号分隔多个匹配数字;分号分隔多个默认值(必填

也可以用表达式匹配所有值,然后用 match no 获取想要的值

性能测试(05)-表达式和业务关联-json关联相关推荐

  1. 性能测试(04)-表达式和业务关联-JDBC关联

    1.JDBC关联 业务场景:先通过一个sql查询出数据,然后再传给另外一个sql去执行. 1.1.JDBC Connection Configuration 1.2.从 班级表中将需要取的数据查出来 ...

  2. sql解析json格式字段、sql关联json格式字段,mysql解析json、sql解析json字符串

    sql解析json格式字段.sql关联json格式字段,mysql解析json.sql解析json字符串 sql解析字符串 sql关联json中的某个字段 sql解析字符串 表名user_login ...

  3. LOCUST性能测试3(高并发、参数关联、集合点)

    高并发 FastHttpUser类 locust的HTTP客户端默认是使用requests模块实现的,但是在大规模并发http请求时,requests模块并不是最优的实现,为了解决并发资源消耗问题,l ...

  4. mysql中的自关联详解_Laravel - MySQL数据库的使用详解6(Eloquent ORM用法3:模型关联、关联查询)...

    一.一对一关联 一对一关联是很基本的关联.假设一个 User 对应到一个 Phone,phones 表结构如下(通过 user_id 关联 user 表的主键): 1,定义一对一关联 (1)User ...

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

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

  6. 电商软件性能测试,实战 | 电商业务的性能测试(一): 必备基础知识

    原标题:实战 | 电商业务的性能测试(一): 必备基础知识 1. 测试步骤及模型分析 1.1 测试步骤总览 需求分析与测试设计(性能需求目标+业务模型拆解) 测试数据准备和构造(基于模型的数据准备) ...

  7. MySQL表关联及关联查询

    主键 表中的一个字段,该字段的值是每一行数据的唯一标识. 默认情况下,每张表都要有一个主键,也只能有一个主键. 主键生成策略:代理主键,与业务无关的字段,仅仅是用来标识一行数据,一般定义为int类型, ...

  8. mysql 事务关联_MySQL 关联、联合查询,事务ACID见解

    MySQL 关联.联合查询,事务ACID见解 1.关联查询分为几种情况: 1.1.内连接: 1.1.1.INNER JOIN INNER JOIN 产生的结果是两个表的交集 1.1.2.CROSS J ...

  9. 关联容器----关联容器概述,关联容器操作,无序容器

    关联容器和顺序容器有着根本的不同:关联容器中的元素是按关键字来保存和访问的.与之相对,顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的. 关联容器支持高效的关键字查找和访问.两个主要的关联容器 ...

最新文章

  1. 太好玩了,爬虫、部署API、加小程序,一条龙玩转知乎热榜!
  2. 今天用GRID感觉它严重缺少灵活性
  3. Android——Handler总结
  4. 一个功能函数所具备的要素
  5. 编程的精髓:发现问题,解决问题
  6. php 不支持无符号整数,是否可以使用大型无符号int64而不会在PHP中失去精度?
  7. win10切换输入法快捷键_输入法失灵怎么办?该怎么恢复?
  8. python图像识别代码_用Python进行简单图像识别(验证码)
  9. Android Studio 3.1.4 报错Failed to find style 'coordinatorLayoutStyle' in current theme
  10. linux redis-trib.rb,linux 关于redis-trib.rb构建redis集群
  11. 点云合并pcl重载“+”
  12. python写csv文件按升序排列_用python给csv里的数据排序的具体代码
  13. Sql语句查询某列A相同值的另一列B最大值的数据
  14. VirtualBox安装Windows 98步骤
  15. 在 Vue2 中引入高德地图和三维模型
  16. 快手发布二季度及中期业绩:Q2收入191亿元 同比劲增48.8%
  17. OpenCV情绪识别(Python实现,超简单)
  18. python中os库是标准库还是第三方库_Python os 标准库使用
  19. 统计假设检验中的P值及置信区间理解
  20. Sign In with Apple - 使用苹果账号登录你的应用

热门文章

  1. 首发:一份国内机器学习爱好者的性别比例的抽样调查
  2. 重磅推荐《南瓜书》:周志华《机器学习》的代码实现
  3. 首发:徐亦达老师的机器学习课件及下载(中文目录)
  4. 冲刺第八天 12.4 TUE
  5. 浅谈python的深浅拷贝
  6. android 清除矩形
  7. 【Unity】第8章 GUI开发
  8. 企业级监控工具Cacti安装配置全过程
  9. The 30 CSS Selectors you Must Memorize
  10. 使用jquery在新窗口中打开外部链接